Генерики в C# - как я могу создать экземпляр переменной типа аргумент? [дубликат]
этот вопрос уже есть ответ здесь:
у меня есть класс 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
s с соответствующими значениями, ожидаемыми одним из конструкторов типа.если вы получаете сообщение об ошибке компилятора о
cannot convert object to type T
, а затемas T
:var instance = Activator.CreateInstance(typeof(T), new object[] { null, null }) as T;