我有一个简单的泛型类如下:
public class DataResponse<T> where T : new()
{
public DataResponse()
{
this.Data = new List<T>();
IsSuccessful = true;
}
public bool IsSuccessful { get; set; }
public string[] ErrorMessages { get; set; }
public List<T> Data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
它适用于我使用的每个自定义类型,但是在一次实例中我有一个数据集合是一个字段.而不是使用一个字段制作自定义类,而不是制作类型字符串.但是这样做会返回错误:
var response = new DataResponse<String>();
Run Code Online (Sandbox Code Playgroud)
'string'必须是具有公共无参数构造函数的非抽象类型,才能在泛型类型或方法'DataResponse'中将其用作参数'T'
更新 我已经添加了T:new()来响应最初遇到问题.删除它解决了它,因为它导致IDE突出显示实际给我问题的正确行.导致错误的行是一个具有new()约束的方法.
显然它是一种完全不同的方法调用
Ale*_*exD 11
该new约束
where T : new()
Run Code Online (Sandbox Code Playgroud)
要求type T具有公共默认构造函数:
在新的约束规定,在一个泛型类声明的任何类型的参数必须有一个公共的无参数的构造函数.要使用新约束,类型不能是抽象的.
string 没有.
尝试删除where T : new()从
public class DataResponse<T> where T : new()
Run Code Online (Sandbox Code Playgroud)