我有两节课。这些实际上是从我的项目中复制/粘贴的:

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,这也可能很有用。

10-05 18:40