我有一个通用方法,它采用 T 类型的 Enumerables。如果 T 也是 Enumerable,我需要将它传递给另一个函数。但是,由于该函数只接受 Enumerables,并且 T 是通用的,因此它不会编译。我在通过之前检查 T 是否可枚举 - 但显然不是以解决这个问题的方式。
我怎样才能做到这一点?
(显然我可以编写另一种只采用 IEnumerable< IEnumerable< T>> 的方法,并在相关的地方使用它,但这似乎不优雅。)
例子:
public static bool EnumerablesAreEqual<T>(IEnumerable<T> a, IEnumerable<T> b)
{
foreach (T x in a)
{
if (x is Enumerable && !EnumerableContainsEnumerable(x, b))
return false;
if (!b.Contains(x))
return false;
}
...
}
我看过这篇文章,但我不认为这是完全相同的问题。