什么是System.Reflection.RuntimePropertyInfo,我该如何比较它?

ast*_*tef 4 .net c# reflection

我很惊讶地看到,我得到了对象的实际类型x.GetType().GetProperty("Foo")是不是System.Reflection.PropertyInfo,但System.Reflection.RuntimePropertyInfo.

我没有在msdn或其他地方看到这种类型的文档.

我的实际问题从参考 - 比较两个属性增长.我从第三方库中收到一个属性,并将其与我.GetProperty("Foo")在相同类型上获得的属性进行比较.我希望属性是同一个对象(在调试时它们看起来像"Locals"窗口中的相同属性),但它们不是(GetHashCode结果不同).所以,我认为它可以某种方式与属性对象的实际类型相关System.Reflection.RuntimePropertyInfo.

什么是System.Reflection.RuntimePropertyInfo?怎么比较呢?它和往常一样PropertyInfo吗?

Rob*_*Rob 9

RuntimePropertyInfo是一个内部实现.它PropertyInfo实际上是一个GetProperty返回PropertyInfo(即使是基础类型RuntimePropertyInfo).

第三方库可能会获得与您不同类型的属性?

new blah().GetType().GetProperty("Test") == new blah().GetType().GetProperty("Test")
Run Code Online (Sandbox Code Playgroud)

返回true.