我不知道是否有辦法找到,如果對象是一個數組或IEnumerable的,它是比這更漂亮:的對象是一個數組或IEnumerable的
var arrayFoo = new int[] { 1, 2, 3 };
var testArray = IsArray(arrayFoo);
// return true
var testArray2 = IsIEnumerable(arrayFoo);
// return false
var listFoo = new List<int> { 1, 2, 3 };
var testList = IsArray(listFoo);
// return false
var testList2 = IsIEnumerable(listFoo);
// return true
private bool IsArray(object obj)
{
Type arrayType = obj.GetType().GetElementType();
return arrayType != null;
}
private bool IsIEnumerable(object obj)
{
Type ienumerableType = obj.GetType().GetGenericArguments().FirstOrDefault();
return ienumerableType != null;
}
這個問題存在一個基本問題:數組* *是* IEnumerable。 – StriplingWarrior
您的'IsEnumerable'只檢查泛型類型。 'MyAbstractClass'將返回true。 –
您'IsIEnumerable'不測試一個項目是否爲'IEnumerable'。它用至少一個泛型參數來測試該類型是否是泛型類型。 – shf301