【发布时间】:2009-11-18 05:52:25
【问题描述】:
我有以下扩展方法可以将一个集合中的元素添加到另一个集合中:
public static void AddRange<T>(this ICollection<T> collection, IEnumerable<T> list)
{
foreach (var item in list)
{
collection.Add(item);
}
}
如果 IEnumerable 列表与我要添加到的 ICollection 类型相同,则此方法可以正常工作。但是,如果我有这样的事情:
var animals = new List<Animal>();
var dogs = new List<Dog>(); // dog is a subclass of animal
animals.AddRange(dogs); // this line has a compiler error, it can't infer the type
如果 IEnumerable 的类型是 T 类型的子类(或实现接口),我如何修改我的扩展方法以使其能够执行此类操作?
【问题讨论】:
标签: c# generics parameters extension-methods