Страницы

Поиск по вопросам

пятница, 20 декабря 2019 г.

System.Reflection получить экземпляр класса

#c_sharp #net #рефлексия


Какой метод в Reflection может дать мне пустой экземпляр класса?
    


Ответы

Ответ 1



Activator.CreateInstance var instance = (ObjectType)Activator.CreateInstance(typeof(ObjectType));

Ответ 2



Есть и немного другой способ создания экземпляра, пример Generic - метода для создания экземпляра объекта заданного типа: public static T GetNewObject() { var constructor = typeof(T).GetConstructor(new Type[] {}); if (constructor != null) { return (T) constructor.Invoke(new object[] {}); } return default(T); } В отличие от Activator.CreateInstance - данный метод не выбросит исключение, в случае, если для объекта не определено беспараметрических конструкторов, будет возвращено значение null. Ссылка на источник: Get a new object instance from a Type - там есть и другие ответы, которые будут полезны, но я решил выделить этот. Метод Type.GetConstructor - выполняет поиск открытого конструктора экземпляра, параметры которого соответствуют типам, содержащимся в указанном массиве. Метод MethodBase.Invoke - вызывает метод или конструктор, представленный текущим экземпляром, используя указанные параметры. Выражение default(T) - выражения значения по умолчанию, которое создает значение по умолчанию с типом T. Конечно же, использовать подход с помощью Activator.CreateInstance намного проще и удобнее, как уже был дан ответ от @free_ze

Комментариев нет:

Отправить комментарий