У меня есть метод, который динамически создает таблицу 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
}
В заключении, когда я делаю это так, я получаю сообщение об ошибке:
Cannot convert from
"System.Collections.Generic.List<MyModel>"
to"System.Collections.Generic.List<MyInterface>"
.
Действительно ли метод 'Таблица' действительно нуждается в полном диапазоне опций, который предоставляет' List
Что касается * почему * вы получаете это исключение, прочитайте [ковариацию и контравариантность (часть 2)] (https://blogs.msdn.microsoft.com/ericlippert/2007/10/17/covariance-and-contravariance- in-c-part-two-array-covariance /) и другие части этой темы Эрика Липперта. В принципе, если у вас есть метод 'AddLions (List animals)' и ему будет разрешено передавать «Список », он может стать довольно грязным. –
Corak