我有一个泛型类,我想用泛型类型实例化一个对象。我想为类型的构造函数使用一个参数。
我的代码:
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':创建变量实例时无法提供参数 输入的
任何想法我该怎么做?
答案 0 :(得分:112)
看看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;