C#中的泛型 - 如何使用参数创建变量类型的实例?

时间:2011-06-20 11:18:22

标签: 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 个答案:

答案 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;