我想確定運行時類型是否是某種集合類型。我在下面的工作,但似乎很奇怪,我必須命名我認爲是數組中的集合類型的類型,就像我所做的那樣。如何確定一個類型是否是一種類型的集合?
在下面的代碼中,泛型邏輯的原因是因爲在我的應用程序中,我期望所有集合都是通用的。
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'作爲'char's集合,儘管它實現IEnumerable的''。 –
svick