首页 文章

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

提问于
浏览
69

这个问题在这里已有答案:

我有一个泛型类,我想用泛型类型实例化一个对象 . 我想为类型的构造函数使用一个参数 .

我的代码:

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 回答

  • 106

    看看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;
    

相关问题