我有一个泛型类,我想用泛型类型实例化一个对象.我想为类型的构造函数使用一个参数.
我的代码:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到了一个错误
new T(some_param)
Run Code Online (Sandbox Code Playgroud)
'T':在创建变量类型的实例时无法提供参数
任何想法我怎么能这样做?
Gra*_*mas 117
看看Activator.CreateInstance.例如:
var instance = Activator.CreateInstance(typeof(T), new object[] { null, null });
Run Code Online (Sandbox Code Playgroud)
显然,用null一个类型的构造函数所期望的适当值替换s.
如果收到编译器错误cannot convert object to type T,请包括as T:
var instance = Activator.CreateInstance(typeof(T),
new object[] { null, null }) as T;
Run Code Online (Sandbox Code Playgroud)