在类中创建泛型对象

本文关键字:泛型 对象 创建 | 更新日期: 2023-09-27 18:08:19

我正在创建一个基类,其他类可以从中派生。

public class BaseClass<T> where T
{
    public BaseClass()
    {
        TClassObject = new T("SomeText"); // Error here
    }
    public T TClassObject { get; set; }
}

'T':在创建变量类型的实例时不能提供参数。

我错过了什么

在类中创建泛型对象

From MSDN:

新的约束规定泛型类声明中的任何类型实参必须有一个公共无参数构造函数。

所以它需要无参数。你可能想看看Activator.CreateInstance

http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx

where T : new()约束规定T必须有一个无参数构造函数。您的代码正在调用一个接受字符串参数的构造函数,并且不能保证您的T将具有这样的构造函数。

在c#中不可能在特定的构造函数签名上创建约束。如果您需要此功能,您最好使用类似于此线程中的答案之一的东西。