実行時の型が何らかのコレクション型であるかどうかを調べようとしています。私が下にあるものは動作しますが、私が行ったような配列のコレクション型と思われる型の名前を付ける必要があるのは奇妙です。タイプがコレクションのタイプであるかどうかを判断する方法は?
以下のコードでは、一般的なロジックの理由は、私のアプリケーションでは、すべてのコレクションが汎用であると考えているからです。
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));
}
このコードをどのようにしてよりスマートに簡単にすることができますか?
ことの一つは、あなたが通常 ''それはIEnumerableを 'を実装していても、' char'sのコレクションとしてSTRING'検討する必要がないということです。 –
svick