Какой метод в Reflection может дать мне пустой экземпляр класса?
Activator.CreateInstance
var instance = (ObjectType)Activator.CreateInstance(typeof(ObjectType));
Есть и немного другой способ создания экземпляра, пример Generic - метода для создания экземпляра объекта заданного типа:
public static T GetNewObject<T>()
{
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
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть такой код с двумя циклами for:
Помогите разобратьсякак корректно построить иерархию для 3 вложенности в treeview, а именно для 3 классов, описывающих таблицы БД (entity framework):
Хочу в классе Eloquent получить название класса Tickers