如何檢查我接收的對象是否爲方法結果不是ValueType
而不是IEnumerable<ValueType>
?檢查IEnumerable是否爲ValueType(運行時)
這裏是我寫的:
MethodInfo selectedOverload = SelectOverload(selectedMethodOverloads);
object result = ExecuteAndShowResult(selectedOverload);
ExploreResult(result);
private static void ExploreResult(object result)
{
if (result != null &&
!(result is ValueType) &&
!((IEnumerable)result).GetType().GetProperty("Item").PropertyType) is ValueType)
)
Console.WriteLine("explore");
}
不幸的PropertyType
類型爲Type
,它的內容是我需要檢查的類型(例如int
),但我不知道怎麼樣。
編輯:
確定,.IsValueType
工作,但現在我想也排除字符串(這不被視爲值類型),還等什麼?
!(((IEnumerable)result).GetType().GetProperty("Item").PropertyType is string)
不起作用!
編輯2:
只是簡單地回答自己:
:!(((IEnumerable)result).GetType().GetProperty("Item").PropertyType == typeof(string))
問題仍然是開放的,如果我想從一個基類檢查繼承什麼
!(((IEnumerable)result).GetType().GetProperty("Item").PropertyType == typeof(BaseClass))
不起作用,因爲的typeof檢查運行時類型,如果PropertyType == InheritedClassType
它將返回false ...
你僅僅意味着'的getProperty( 「Item」)。PropertyType.IsValueType'? –
Type.IsValueType? –
感謝您的回覆!這是我所需要的。 – Teejay