0

我正在制作一个可以派生其他类的基类。

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

    public T TClassObject { get; set; }
}

“T”:创建变量类型的实例时无法提供参数。

我在这里缺少什么。

4

2 回答 2

5

来自 MSDN:

新约束指定泛型类声明中的任何类型参数都必须具有公共无参数构造函数。

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

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

于 2013-04-09T12:59:37.573 回答
2

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

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

于 2013-04-09T13:04:22.660 回答