Полагаю, вы действительно пытаетесь конвертировать из List<IScreen>
в List<IRenderable>
или что-то подобное.
Вы не можете сделать это вообще до .NET 4 из-за универсальной неизменности . В .NET 4 вы можете сделать это для интерфейсов и делегатов , где это уместно . В частности, вы можете конвертировать из IEnumerable<IScreen>
в IEnumerable<IRenderable>
. Если вы просто пытаетесь объединить список, это должно быть нормально - вы должны иметь возможность использовать List<T>.AddRange
с каждым из ваших списков ... но, опять же, это применяется только в C # 4. Другой вариант в C # 4 будет что-то вроде:
var combined = firstList.Concat<IRenderable>(secondList).ToList();
В качестве примера того, почему это не всегда безопасно (разрешено использование 1018 * в C # 4, безопасно), рассмотрим следующий код:
List<Apple> apples = new List<Apple> { new Apple(...) };
List<Fruit> fruit = apples;
fruit.Add(new Orange());
Теперь список, к которому относится apples
, содержит апельсин! Это явно нехорошо с точки зрения безопасности типов.
Как говорит Дриис, если вы можете дать более подробную информацию (например, что у вас есть и что вы хотите), мы сможем помочь больше.