如何判断某事物是否为IEnumerable <>?

问题描述 投票:0回答:1

我有类型。

我如何确定它是否为IEnumerable<>

这些:

   typeof(IEnumerable<>).IsAssignableFrom(memberType);
   typeof(IEnumerable<object>).IsAssignableFrom(memberType);

返回IEnumerable<int>为假

鉴于此:

   typeof(IEnumerable).IsAssignableFrom(memberType);

为字符串返回true。

c# reflection ienumerable
1个回答
0
投票

嗯...我找到了a的方法...

private static bool IsGenericEnumerable(this [NotNull] Type type) =>
            typeof(IEnumerable<>).IsAssignableFrom(type)
            || typeof(IEnumerable<object>).IsAssignableFrom(type)
            || typeof(IEnumerable<char>).IsAssignableFrom(type)
            || typeof(IEnumerable<byte>).IsAssignableFrom(type)
            || typeof(IEnumerable<sbyte>).IsAssignableFrom(type)
            || typeof(IEnumerable<ushort>).IsAssignableFrom(type)
            || typeof(IEnumerable<short>).IsAssignableFrom(type)
            || typeof(IEnumerable<uint>).IsAssignableFrom(type)
            || typeof(IEnumerable<int>).IsAssignableFrom(type)
            || typeof(IEnumerable<ulong>).IsAssignableFrom(type)
            || typeof(IEnumerable<long>).IsAssignableFrom(type)
            || typeof(IEnumerable<float>).IsAssignableFrom(type)
            || typeof(IEnumerable<double>).IsAssignableFrom(type)
            || typeof(IEnumerable<decimal>).IsAssignableFrom(type)
            || typeof(IEnumerable<DateTime>).IsAssignableFrom(type);

...但是那太可怕了,我希望有更好的方法。

© www.soinside.com 2019 - 2024. All rights reserved.