Передача списка универсальных типов в метод
У меня есть метод, который динамически создает HTML-таблицу в проекте MVC. Эта таблица может отображать коллекцию одного из четырех типов сущностей. Что мне нужно сделать, это передать типы сущностей в метод, не кодируя метод для каждого типа.
Это мое объявление метода:
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>"
,
1 ответ
Вы можете добавить интерфейс, который реализуют все ваши четыре класса, затем вы можете передать список этого интерфейса вместо списка типа object
, Это спасает вас от многих забросов.
public partial class MyModel : MyInterface
{
// Properties
}
interface MyInterface {}
public static HtmlString Table(int rows, int columns, string[] headers, List<MyInterface> model)
Нет необходимости в дженериках вообще. Кроме того, дженерики подразумевают, что могут быть переданы ВСЕ виды типов, которые разделяют условие, а не только несколько. Итак, что происходит, когда ваш пользователь метода передал YourModel
-класс вместо MyMopdel
,