考虑以下类型:
public interface IMyClass { }
public class MyClass : IMyClass { }
我想知道如何将一个List<MyClass>
转换成一个List<IMyClass>
? 我并不完全清楚协变性/逆变性的话题,但我知道因为这个原因我不能直接强制转换List。
我只能想到这个平凡无奇的解决方案,没有任何优雅之处,而且浪费资源:
...
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 的解决方案,但为了完整起见,我也很乐意看到使用更新框架版本的更加优雅的解决方案。)