Я пытаюсь определить, является ли тип среды выполнения своего рода типом коллекции. То, что у меня ниже, работает, но мне кажется странным, что я должен назвать типы, которые, по моему мнению, являются типами коллекций в массиве, как я это делал.
В приведенном ниже коде причина общей логики заключается в том, что в моем приложении я ожидаю, что все коллекции будут универсальными.
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));
}
Как бы я мог реорганизовать этот код умнее или проще?