Дженерики в С# - как я могу создать экземпляр типа переменной с аргументом?
У меня есть класс generics, где я хочу создать экземпляр объекта с общим типом. Я хочу использовать аргумент для конструктора типа.
Мой код:
public class GenericClass<T> where T : Some_Base_Class, new()
{
public static T SomeFunction(string s)
{
if (String.IsNullOrEmpty(s))
return new T(some_param);
}
}
Я получаю сообщение об ошибке
new T(some_param)
'T': не может предоставлять аргументы при создании экземпляра переменной Тип
Любые идеи, как я могу это сделать?
Ответы
Ответ 1
Посмотрите Activator.CreateInstance
. Например:
var instance = Activator.CreateInstance(typeof(T), new object[] { null, null });
Очевидно, заменяя null
соответствующими значениями, ожидаемыми одним из конструкторов типа.
Если вы получили ошибку компилятора cannot convert object to type T
, включите as T
:
var instance = Activator.CreateInstance(typeof(T),
new object[] { null, null }) as T;