我有一个动态构建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>"
。
答案 0 :(得分:2)
您可以添加所有四个类实现的接口,然后您可以传递该接口的列表而不是类型object
的列表。这可以使您免于多次演员表演。
public partial class MyModel : MyInterface
{
// Properties
}
interface MyInterface {}
public static HtmlString Table(int rows, int columns, string[] headers, List<MyInterface> model)
根本不需要仿制药。此外,泛型意味着可以传递共享条件的所有类型,而不仅仅是少数。那么当您的方法用户通过YourModel
- 类而不是MyMopdel
时会发生什么。