我有一对班级。这些都是从我的项目中复制/粘贴:
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)
而不是任何其他更长的语法。我没有将“创建”方法放在PageResult(T)
课程中,因为我非常确定这需要我输入PageResult<int>(5, listOf5Numbers)
,而且需要额外的五个字符。
但是有两个课程似乎相当蹩脚。有没有一种方法可以获得更紧凑的语法,而不需要一次性课程来存储它?
答案 0 :(得分:2)
正如您已经指出的那样,您必须指定类型参数才能访问Create
函数,因为特定的PageResult<T>
类甚至不会存在,直到JIT在方法启动时创建它叫它。请参阅Tuples以获取.NET Framework本身的实例,仅基于相同的原因执行此模式。
请注意,另一个选项是使PageResult
类非static
,并继承PageResult<T> : PageResult
,这将允许您存储没有类型的PageResult
对象的集合参数。如果您使用abstract PageResult
答案 1 :(得分:1)
没有。您可以创建一个VS片段(或其他一些可以生成源代码的插件/工具)来为您输入一些样板文件,但最终代码需要在那里。