• Как реализовать динамическое изменение класса в C#?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Если я правильно понимаю, то вы про полиморфизм)
    Что-то вроде:

    // Каждая локаль должна иметь в себе словарь с переводами
    public interface class ILocale {
        Dictionary<string, string> Translation { get; }
    }
    
    // реализации разных локалей
    public class English : ILocale {
        public Dictionary<string, string> Translation {get; set;} = new Dictionary<string, string> {
            ["test"] = "Test"
        };
    }
    public class Russian : ILocale {
        public Dictionary<string, string> Translation {get; set;}  = new Dictionary<string, string> {
            ["test"] = "Тест"
        };
    }
    public class Ukrainian : ILocale {
        public Dictionary<string, string> Translation {get; set;}  = new Dictionary<string, string> {
            ["test"] = "Тест"
        };
    }
    public class Kazakh : ILocale{
        public Dictionary<string, string> Translation {get; set;} = new Dictionary<string, string> {
            ["test"] = "Сынақ"
        };
    }

    И, допустим, читаем из какого-то конфига:
    namespace TestLib{
        class Program {        
            static void Main(string[] args) {
                ILocale locale = GetLocale();
                WriteLine(locale.Translation["test"]);
                ReadKey();
            }
        }
    
        private static ILocale GetLocale() {
            // Мы можем получать ее динамически из конфига
            // но вызывающий код знает лишь, что это будет некая локаль, но какая
            // точно - неизвестно
            return Configuration.GetLocaleFromXml(); // псевдокод
        }
    }
    Ответ написан
    2 комментария