在第一行,我收到此编译错误。 “类型参数声明必须是标识符而不是类型。”有办法解决这个问题吗?
public class ExtJsGridJsonModel<IEnumerable<T>>
{
[DataMember(Name = "total")]
public int Total { get; set; }
[DataMember(Name = "rows")]
public IEnumerable<T> Rows { set; get; }
public ExtJsGridJsonModel(IEnumerable<T> rows, int total)
{
this.Rows = rows;
this.Total = total;
}
}
更新
很抱歉我的问题和意图缺乏细节。基本上,我的最终目标是这样做:
new ExtJsGridJsonModel<Company>();
而不是:
new ExtJsGridJsonModel<IEnumerable<Company>>();
基本上,我想通过省略IEnumerable类型来减少代码。我该怎么做?
答案 0 :(得分:5)
只需取出声明的IEnumerable
部分:
public class ExtJsGridJsonModel<T>
{
[DataMember(Name = "total")]
public int Total { get; set; }
[DataMember(Name = "rows")]
public IEnumerable<T> Rows { set; get; }
public ExtJsGridJsonModel(IEnumerable<T> rows, int total)
{
this.Rows = rows;
this.Total = total;
}
}
答案 1 :(得分:1)
我假设您将使用它来存储本质上是一组二维值:
public class ExtJsGridJsonModel<T> where T : IEnumerable
{
[DataMember(Name = "total")]
public int Total { get; set; }
[DataMember(Name = "rows")]
public IEnumerable<T> Rows { set; get; }
public ExtJsGridJsonModel(IEnumerable<T> rows, int total)
{
this.Rows = rows;
this.Total = total;
}
}
如果没有,或者T
实际上是一个强类型的行类,那么你可以删除where T : IEnumerable
子句