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;