#c_sharp #visual_studio
У меня есть класс и приватный конструктор, как создать если модификатор доступа не позволяет?
Ответы
Ответ 1
C# -- полный код консольного приложения https://ideone.com/89wUFX using System; namespace TestConsoleApp { class Program { public static void Main(string[] args) { Type type = typeof(Foo); Foo f = (Foo)Activator.CreateInstance(type, true); Console.ReadKey(); } } class Foo { private Foo() { Console.WriteLine("Private Constructor forefer!"); } } } Так что ответ на твой вопрос: var f = (SomeClass)Activator.CreateInstance(typeof(SomeClass), true); (SomeClass) приводим результат создаваемого обьекта к нашему классу.. Activator.CreateInstance -- Мы создаем инстанс класса через универсальный метод, через который мы можем создавать инстанс ЛЮБОГО обьекта. Что-то вроде "фабрики". typeof(SomeClass) - берем тип самого класса и высылаем как первый входной параметр метода CreateInstance(). true-- второй входной булийный параметр. Он отвечает за то, какой из конструкторов нужно использовать. Фолс = только публичный, Тру = может создавать инстанс как публичный так и приватный. Не пробовал, но... скорее всего он предпочитает приватный, если возможно. Можешь убедится сам.
Комментариев нет:
Отправить комментарий