C#中的泛型-如何创建带有参数的变量类型的实例?
我有一个泛型类,我想用泛型类型实例化一个对象。我想为类型的构造函数使用一个参数 我的代码:C#中的泛型-如何创建带有参数的变量类型的实例?,c#,generics,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); } } “
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);
}
}
“T”:创建变量实例时无法提供参数
类型
你知道我该怎么做吗?看看。例如:
var instance = Activator.CreateInstance(typeof(T), new object[] { null, null });
显然,将null
s替换为该类型的构造函数之一期望的适当值
如果您收到关于无法将对象转换为类型T
的编译器错误,请将包含为T
:
var instance = Activator.CreateInstance(typeof(T),
new object[] { null, null }) as T;
这是正确的方法,对吧,太好了!非常感谢!:)注意
var instance=Activator.CreateInstance(typeof(T),new object[]{null,null})中的为T
并且这仅在T不是值类型时有效。例如,如果您需要将其与SystemNumerics.Complex(结构)一起使用,则将其转换为(T),而不是使用'as T',我喜欢整洁,因此您可以实际将其编写为以下Activator.CreateInstance(typeof(T),options)正如我所能找到的最好的解决方法一样,哪种方法也能起作用……你打算经常这样做吗?什么版本的C#?另一种方法是在Some_Base_Class
上创建公共属性,然后可以执行以下操作:newt(){SomeProperty=“value”}
var instance = Activator.CreateInstance(typeof(T),
new object[] { null, null }) as T;