[英]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.