有没有一种方法可以对此类进行模板化,以便可以使用可以存储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; }
}
否则,对于具有分页等功能的每个列表页面,我将不得不创建一个新的视图模型。还有更多,如果我可以让后者工作的话。如果需要针对特定视图,我可以继承和完善。
参考方案
您需要使该类通用:
public class ListViewModel<T>
{
public IEnumerable<T> Items { get; set; }
public PagingInfo PagingInfo { get; set; }
}
然后,可以通过提供type参数来创建实例,如下所示:
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。
将谓词<T>转换为Func <T,bool> - c#我有一个包含成员Predicate的类,希望在Linq表达式中使用该类:using System.Linq; class MyClass { public bool DoAllHaveSomeProperty() { return m_instrumentList.All(m_filterExpression); } private IEnumerable&…
Junit4和TestNG与Maven在一个项目中 - java要一起运行它们,几乎没有可用的选项,但是我选择为Junit和TestNG使用不同的配置文件。但是现在的问题是排除和包含测试用例。由于如果我们在Maven的主项目中添加testNG依赖项,它将跳过所有Junit,因此我决定将其放在单独的配置文件中。所以我使用pom.xml中的以下条目从默认(主要)配置文件中排除了TestNG测试:<plugin> …
通过Maven编译器插件不会发生有限的包含和排除 - java我正在使用3.6.0版的maven编译器插件,在此我们只想在特定文件夹中编译一个文件,而在该位置编译所有其他文件。例如:在文件夹应用程序中有14个文件,从那我只希望编译1个文件,但它编译了所有文件,如果我要排除,则它也不起作用。 <sourceDirectory>${basedir}/../src/java</sourceDirectory…
当我所有的都是T时,如何返回Interface <T>的实例? - java我有一个界面:public interface ILoginResult<T> { public T get(); } 我有一个LoginPage对象:public class LoginPage<T> { ... public ILoginResult<T> login(...) { ... } } 我也有一些登录页面对…
<T>如何在这里处理String和Integer - java我不明白T如何使用Integer和String。如此处显示功能中所示,T同时处理整数和字符串。该代码如何工作?class firstBase { <T> void display(T give_num, T give_String) { System.out.println("The given number is = " +…