2013-07-04 87 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,或者使用反射或动态输入来调用方法。 –