我正在尝试确定运行时类型是否是某种集合类型。我在下面的工作,但我必须像我所做的那样在数组中命名我认为是集合类型的类型似乎很奇怪。
在下面的代码中,通用逻辑的原因是,在我的应用程序中,我希望所有集合都是通用的。
bool IsCollectionType(Type type)
{
if (!type.GetGenericArguments().Any())
return false;
Type genericTypeDefinition = type.GetGenericTypeDefinition();
var collectionTypes = new[] { typeof(IEnumerable<>), typeof(ICollection<>), typeof(IList<>), typeof(List<>) };
return collectionTypes.Any(x => x.IsAssignableFrom(genericTypeDefinition));
}
我将如何重构此代码以使其更智能或更简单?