我为IEnumerable<T>
创建了方法的两个重载以及一个实例:
void DoSomething<T>(T arg)
where T:class
{ // do something }
void DoSomething<T>(IEnumerable<T> enumerable)
where T:class
{ // do something }
问题是数组和列表不被识别为IEnumerable<T>
,对于诸如此类的情况
DoSomething(new MyObject[]{o1,o2,o3})
调用单个实例的重载时,T
为MyObject[]
。
有人设计出一个不错的设计,并且总是将IEnumerable<T>
带到实现IEnumerable<T>
的任何其他容器(例如数组和列表)的重载吗?