C# IEnumerable属性的模板?

C# IEnumerable属性的模板?,c#,C#,有没有一种方法可以为这个类设置模板,这样我就可以拥有一个可以存储IEnumerable的通用ListViewModel。因此,与以下内容不同: public class JamesListViewModel { public IEnumerable<James> Jamess { get; set; } public PagingInfo PagingInfo { get; set; } } 公共类JamesListViewModel { 公共IEnumerable

有没有一种方法可以为这个类设置模板,这样我就可以拥有一个可以存储
IEnumerable
的通用ListViewModel。因此,与以下内容不同:

public class JamesListViewModel
{
    public IEnumerable<James> Jamess { get; set; }
    public PagingInfo PagingInfo { get; set; }
}
公共类JamesListViewModel
{
公共IEnumerable james{get;set;}
公共分页信息分页信息{get;set;}
}
我会:

public class ListViewModel
{
    public IEnumerable<T> Items { get; set; }
    public PagingInfo PagingInfo { get; set; }
}
公共类ListViewModel
{
公共IEnumerable项{get;set;}
公共分页信息分页信息{get;set;}
}
否则,对于每个具有分页等功能的列表页面,我将不得不创建一个新的视图模型。更重要的是,如果我能让后者工作的话。如果需要特定的视图,我可以继承和优化它。

只需执行以下操作:

public class ListViewModel<T>
{
    public IEnumerable<T> Items { get; set; }
    public PagingInfo PagingInfo { get; set; }
}
公共类ListViewModel
{
公共IEnumerable项{get;set;}
公共分页信息分页信息{get;set;}
}
有关完整详细信息,请参阅MSDN文档:


您需要将类设置为通用类:

public class ListViewModel<T>
{
    public IEnumerable<T> Items { get; set; }
    public PagingInfo PagingInfo { get; set; }
}
公共类ListViewModel
{
公共IEnumerable项{get;set;}
公共分页信息分页信息{get;set;}
}
然后,可以通过提供如下类型参数来创建实例:

var vm = new ListViewModel<string>();
var vm=new ListViewModel();
多个类型参数可以用逗号分隔:

public class ListViewModel<T, U>
{
    public IEnumerable<T> Items { get; set; }
    public IEnumerable<U> OtherItems { get; set; }
    public PagingInfo PagingInfo { get; set; }
}

var vm = new ListViewModel<string, int>();
公共类ListViewModel
{
公共IEnumerable项{get;set;}
公共IEnumerable OtherItems{get;set;}
公共分页信息分页信息{get;set;}
}
var vm=新的ListViewModel();

有关更多信息,请参阅。

ah所以T本身就是这样做的。我不知道!我会尝试一下额外的var vm部分。。。非常有用没问题。值得注意的是,这在C#中不是模板,而是泛型类。