我有一个control,托管在DesignSurface。
当control.Location
访问其位置属性时,propertyDescriptor.GetValue(control)
访问它时,我会得到不同的值。
propertyDescriptor
的类型为PropertyDescriptor。
有没有人有解决方案?我已经检查过对象实例是否相同。
答案 0 :(得分:1)
那可能取决于对象。以及如何获得类型描述符。例如。它可能是一个自定义描述符,可以返回任何东西。如果是这种情况,您可以为GetTypedescriptor方法提供不使用自定义类型描述符的信息。 (sry没有发布实际代码,但我没有可用的IDE,也无法记住确切的语法)。
另一种方法是使用PropertyInfo而不是propertyDescriptor(如果其余代码使用System.Reflection.PropertyInfo)。
您可以像这样
获取stype字符串的Property Length的PropertyInfotypeof运算(字符串).GetProperty( “长度”); 或者如果它是在编译时未知的类型,如下所示: 。obj.GetType()的getProperty( “长度”);
如果需要遍历所有属性,请调用GetProperties。
但是所有PropertyInfo都依赖于我的猜测,你可以使用PropertyInfo而不是PropertyDescriptor