Предвид следните видове:
public interface IMyClass { }
public class MyClass : IMyClass { }
Чудя се как мога да конвертирам List<MyClass>
в List<IMyClass>
? Не съм напълно наясно с темите за ковариация/контравариантност, но разбирам, че не мога просто да хвърля списъка просто поради това.
Мога да измисля само това тривиално решение; липса на всякаква елегантност, загуба на ресурси:
...
public List<IMyClass> ConvertItems(List<MyClass> input)
{
var result = new List<IMyClass>(input.Count);
foreach (var item in input)
{
result.Add(item);
}
return result;
}
....
Как можете да го разрешите по по-елегантен/ефективен начин?
(Моля, имайте предвид, че имам нужда от решение .NET 2.0, но за пълнота ще се радвам да видя и по-елегантните решения, използващи по-нови версии на рамка.)