1

我有一个控件,托管在DesignSurface上。

当它的 Location 属性被 访问control.Location时,当它被 访问时propertyDescriptor.GetValue(control),我得到不同的值。

propertyDescriptorPropertyDescriptor类型。

有人对此有解决方案吗?我已经检查过对象实例是否相同。

4

1 回答 1

1

好吧,这可能取决于对象。以及如何获得类型描述符。例如,它可以是一个自定义描述符,可以返回任何内容。如果是这种情况,您可以提供不使用自定义类型描述符的 GetTypedescriptor 方法信息。(抱歉没有发布实际代码,但我没有可用的 IDE,也不记得确切的语法)。

另一种方法是使用 PropertyInfo 而不是 propertyDescriptor(如果其余代码使用 System.Reflection.PropertyInfo)。

您可以像这样获取 stype 字符串的 Property Length 的 PropertyInfo

typeof(string).GetProperty("Length"); 或者如果它是编译时未知的类型,如下所示:obj.GetType().GetProperty("Length");

如果您需要遍历所有属性,请改为调用 GetProperties。

但是所有这些 PropertyInfo 都依赖于我的猜测,即您可以使用 PropertyInfo 而不是 PropertyDescriptor

于 2009-05-29T12:48:00.693 回答