我正在创建一个基类,可以从中派生其他类。
public class BaseClass<T> where T
{
public BaseClass()
{
TClassObject = new T("SomeText"); // Error here
}
public T TClassObject { get; set; }
}
'T':在创建变量类型的实例时无法提供参数。
我在这里缺少什么。
答案 0 :(得分:5)
来自MSDN:
新约束指定泛型类声明中的任何类型参数都必须具有公共无参数构造函数。
所以它需要无参数。您可能需要查看Activator.CreateInstance
http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx
答案 1 :(得分:2)
where T : new()
约束声明T
必须具有无参数构造函数。您的代码正在调用一个带有字符串参数的构造函数,并且不能保证您的T
将具有这样的构造函数。
在C#中无法在特定构造函数签名上创建约束。如果您需要此功能,最好使用此thread中的一个答案。