ランタイムタイプがある種のコレクションタイプであるかどうかを判断しようとしています。以下に示すものは機能しますが、私が行ったように、配列内のコレクション型であると私が信じる型に名前を付ける必要があるのは奇妙に思えます。
以下のコードでは、汎用ロジックの理由は、私のアプリでは、すべてのコレクションが汎用であると期待しているためです。
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));
}
このコードをよりスマートまたはシンプルにリファクタリングするにはどうすればよいですか?