и предполагая, что вы используете C # 4.0, который ввел ковариацию и контравариантность, вы можете сделать это, избегая предложенных общих решений:
в стороне от наследства и мне нужно немного помочь.
У меня есть абстрактный базовый классChief
, Есть два наследующих классаShip
а такжеVehicle
, которые разделяют несколько свойств черезChief
.
У меня есть метод, который использует эти общие свойства:
public static void AssignRandomProperties(PSetList routeSettings, List<Chief> theChiefs)
но когда я пытаюсь передать
List<Ship>
или
List<Vehicle>
Мне сказали, что они не могут быть обращены. Вот пример вызова метода:
ChiefRouteRandomizer.AssignRandomProperties(s.Route, theVehicles);
Я предполагал, конечно, чтоList<Vehicle>
будет рассматриваться какList<Chief>
когда передается в качестве аргументаAssignRandomProperties
но, видимо, нет. Нужно ли преобразовывать список вList<Chief>
первый? Если да, то как?