【问题标题】:How to cast PropertyInfo to MyCustomPropertyInfo?如何将 PropertyInfo 转换为 MyCustomPropertyInfo?
【发布时间】:2014-07-13 08:18:02
【问题描述】:

我有自己的自定义PropertyInfo

Public MustInherit Class MyCustomPropertyInfo
Inherits PropertyInfo

'... Some Added Properties 

End Class

在另一个类中我尝试检索它:

Dim MyActualProperty As MyCustomPropertyInfo = Me.GetType.GetProperty("SomeProperty")

但它给了我这个例外:

无法将“RuntimePropertyInfo”类型的对象转换为类型 'MyCustomPropertyInfo'

【问题讨论】:

  • 你不能投射到对象不是的东西上。 RuntimePropertyInfo 不是 MyCustomPropertyInfo 所以你根本不能把它当作一个。
  • 我需要一个解决方法,如何扩展 propertyinfo 类的功能以向我的属性添加更多信息,这是必要的。
  • 你试图通过扩展PropertyInfo来解决的根本问题是什么?
  • 我需要为每个设置的属性添加一个状态,并获取一个指示它是否正确的值,绑定到表示属性的每个控件的文本块文本。 state 的值是通过这些控件设置 onpropertychanged...
  • 不要通过扩展 PropertyInfo 来做到这一点,因为这对于类型来说是静态的。您正在处理对象的实例,因此您应该只创建一个具有所需布尔属性的适配器类,您可以实例化并包装您正在跟踪的每个实例。

标签: vb.net inheritance propertyinfo


【解决方案1】:

我找到了一种解决方法,如何解决我的问题,将属性的状态添加到同一类中的每个属性,而不是每个 PropertyInfo 中,因为正如 Enigmativity 所说,我不能通过扩展 PropertyInfo 来做到这一点,因为它对类型是静态的,我正在处理对象的实例。

公职人员

私有_名称作为字符串

公共属性名称为字符串 '获取/设置

私有 _NameSTATE 作为布尔值

公共属性名称STATE As Boolean '获取/设置

'...更多带有状态的属性

结束类

感谢 Enigmativity 的澄清...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多