有没有办法模拟这个类,以便我可以拥有一个可以存储IEnumerable<Whatever>
的通用ListViewModel。所以而不是以下内容:
public class JamesListViewModel
{
public IEnumerable<James> Jamess { get; set; }
public PagingInfo PagingInfo { get; set; }
}
我会:
public class ListViewModel
{
public IEnumerable<T> Items { get; set; }
public PagingInfo PagingInfo { get; set; }
}
否则对于每个具有分页等的列表页面,我将不得不创建一个新的视图模型。更重要的是,如果我可以让后者工作。如果需要特定视图,我可以继承和优化。
答案 0 :(得分:4)
您需要使该类具有通用性:
public class ListViewModel<T>
{
public IEnumerable<T> Items { get; set; }
public PagingInfo PagingInfo { get; set; }
}
然后,可以通过提供类型参数来创建实例:
var vm = new ListViewModel<string>();
多个类型参数可以用逗号分隔:
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>();
有关详细信息,请参阅this guide。
答案 1 :(得分:2)
这样做:
public class ListViewModel<T>
{
public IEnumerable<T> Items { get; set; }
public PagingInfo PagingInfo { get; set; }
}
有关完整详细信息,请参阅MSDN文档: