我有两节课。这些实际上是从我的项目中复制/粘贴的:
public static class PageResult
{
public static PageResult<T> Create<T>(int totalCount, IList<T> items)
{
return new PageResult<T>()
{
TotalCount = totalCount,
Items = items,
};
}
}
public class PageResult<T>
{
public int TotalCount { get; set; }
public IList<T> Items { get; set; }
}
我这样做的原因是为了可以使用
PageResult.Create(5, listOf5Items)
而不是其他更长的语法。我没有将Create方法放在PageResult(T)
类中,因为我敢肯定,这需要我键入PageResult<int>(5, listOf5Numbers)
,这又是五个字符。但是有两个班级似乎很la脚。有没有一种方法可以使我获得更紧凑的语法,而不必只提供一个一次性类来存储它?
最佳答案
正如您已经指出的那样,您甚至必须指定类型参数才能访问Create
函数,因为该特定的PageResult<T>
类甚至不存在,直到JIT在方法开始调用它时才创建它。出于基本相同的原因,请参见Tuples以了解执行该模式的.NET Framework本身的实例。
请注意,另一个选择是使PageResult
类成为非static
类,并继承PageResult<T> : PageResult
,这将允许您存储不带类型参数的PageResult
对象的集合。如果使用abstract PageResult
,这也可能很有用。