单个实例以及IEnumerable <t>的重载方法

时间:2019-02-05 14:44:23

标签: c# polymorphism

我为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})

调用单个实例的重载时,TMyObject[]

有人设计出一个不错的设计,并且总是将IEnumerable<T>带到实现IEnumerable<T>的任何其他容器(例如数组和列表)的重载吗?

1 个答案:

答案 0 :(得分:-1)

您可以尝试一下。基本上在调用方法之前添加强制类型转换。 https://dotnetfiddle.net/Xwqp5n