我试图确定一个运行时类型是否是某种集合类型。我下面的代码可以工作,但是我觉得很奇怪,我必须像我所做的那样在数组中命名我认为是集合类型的类型。
在下面的代码中,通用逻辑的原因是因为在我的应用程序中,我希望所有集合都是通用的。
在下面的代码中,通用逻辑的原因是因为在我的应用程序中,我希望所有集合都是通用的。
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));
}
如何对这段代码进行重构,使其更加智能或简单?
string
实现了IEnumerable<char>
,通常情况下你不应该将其视为char
的集合。 - svick