IEnumerable属性的模板? - c#

有没有一种方法可以对此类进行模板化,以便可以使用可以存储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 = " +…