2013-07-04 84 views
0

我想要獲得所有以「Foo」開頭的ObjectSet。我已經編寫了下面的代碼,但它並沒有進入if結構。比較泛型類型的運行時類型

foreach (PropertyDescriptor prop in TypeDescriptor.GetProperties(context)) 
      { 
       if (prop.PropertyType == typeof(ObjectSet<>)) 
       { 
        // It doesn't step here even though 
        // prop.PropertyType is an ObjectSet`1... 

請幫忙。

回答

4

我懷疑prop.PropertyType實際上是ObjectSet<X>對於一些X。你可能想要像這樣的東西:

if (prop.PropertyType.IsGenericType && 
    prop.PropertyType.GetGenericTypeDefinition() == typeof(ObjectSet<>)) 
+0

非常感謝。 –

+0

我會怎麼說:'prop.GetValue(context)as ObjectSet <>'? –

+0

@ WaterCoolerv2:恐怕你不會。之後你想用它做什麼?你可以將它轉換爲ObjectQuery,或者使用反射或動態輸入來調用方法。 –