我有类型。
我如何确定它是否为IEnumerable<>
?
这些:
typeof(IEnumerable<>).IsAssignableFrom(memberType);
typeof(IEnumerable<object>).IsAssignableFrom(memberType);
返回IEnumerable<int>
为假
鉴于此:
typeof(IEnumerable).IsAssignableFrom(memberType);
为字符串返回true。
嗯...我找到了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);
...但是那太可怕了,我希望有更好的方法。