Учитывая следующие виды:
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, но для полноты картины я был бы рад увидеть более элегантные решения, использующие более новые версии фреймворка.)