Ковариация / контравариантность не могут поддерживаться в изменчивых коллекциях, о которых упоминали другие, потому что невозможно гарантировать безопасность типов во время компиляции; однако, можно сделать быстрое одностороннее преобразование в C # 3.5, если это то, что вы ищете:
List<Giraffe> giraffes = new List<Giraffe>();
List<Animal> animals = giraffes.Cast<Animal>().ToList();
Конечно, это не одно и то же, это не ковариантность - вы фактически создаете еще один список, но это «обходной путь», так сказать.
В .NET 2.0 вы можете использовать ковариацию массива для упрощения кода:
List<Giraffe> giraffes = new List<Giraffe>();
List<Animal> animals = new List<Animal>(giraffes.ToArray());
Но имейте в виду, что вы на самом деле создаете две новые коллекции здесь.
только что решил это, добавив ngfModule к импорту дочернего модуля. Отличный пример для использования, так что наслаждайтесь этим.