繁体   English   中英

将泛型类型列表传递给方法

[英]Passing list of generic types into method

我有一种在MVC项目中动态构造html表的方法。 该表可以显示四种实体类型之一的集合。 我需要做的是将实体类型传递给方法,而无需为每种类型编码方法。

这是我的方法声明:

public static HtmlString Table(int rows, int columns, string[] headers, List<MyInterface> model)
{
    //...
}

这是我的观点以及如何调用辅助方法:

@model List<MyModel>

<some html>

@OfficeUiHelper.Table(Model.Count, 5, new string[] { "First Name", "Last Name", "Username", "Company", "Role" }, Model)

这是我的界面:

public interface MyInterface
{
}

这是我的实体类型之一:

public partial class MyModel : MyInterface
{
    // Properties
}

总之,当我这样做时,我得到一个错误:

无法从"System.Collections.Generic.List<MyModel>"转换为"System.Collections.Generic.List<MyInterface>"

您可以添加所有四个类都实现的接口,然后可以传递该接口的列表而不是type object的列表。 这可以使您免去很多演员的麻烦。

public partial class MyModel : MyInterface
{
    // Properties
}

interface MyInterface {}

public static HtmlString Table(int rows, int columns, string[] headers, List<MyInterface> model)

完全不需要泛型。 此外,泛型意味着可以传递所有共享条件的类型,而不仅仅是少数。 因此,当您的方法的用户传递了YourModel -class而不是MyMopdel时,会发生什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM