我想知道是否有办法找到对象是数组还是 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;
}