ICollection<Bar> 转换为 ICollection<IBar> 的推荐方法是什么,其中 Bar 实现 IBar

是不是就这么简单

collection = new List<Bar>();
ICollection<IBar> = collection as ICollection<IBar>?

或者有更好的方法吗?

最佳答案

您必须转换列表中的每个项目并创建一个新项目,例如使用 Cast :

ICollection<IBar> ibarColl = collection.Cast<IBar>().ToList();

在 .NET 4 中,使用 IEnumerable<T> 的协方差:
ICollection<IBar> ibarColl = collection.ToList<IBar>();

或使用 List.ConvertAll :
ICollection<IBar> ibarColl = collection.ConvertAll(b => (IBar)b);

后者可能会更有效一点,因为它事先知道大小。

关于c# - 将具体类型的 ICollection 转换为具体类型接口(interface)的 ICollection,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34857758/

10-11 07:47