【问题标题】:vb.net reflection vs. late binding?vb.net 反射与后期绑定?
【发布时间】:2010-01-10 22:55:13
【问题描述】:

在 VB.NET 中,无论是反射还是后期绑定,什么应该更合适或建议使用什么:

'Type can be various objects that have a common property for sure.'
Dim type = sender.GetType()
Dim prop = type.GetProperty("Text", 20)
Dim value = property.GetValue(sender, Nothing)

对比:

Dim value = sender.Text

【问题讨论】:

    标签: vb.net reflection late-binding


    【解决方案1】:

    在幕后,他们都在做同样的事情(相对而言)。 VB.NET 的后期绑定功能是在运行时通过程序集元数据查询完成的,这正是反射的全部意义所在。

    第一种方法的一个好处是您有机会以更细粒度的方式处理错误。

    【讨论】:

    • 我想我会选择更具可读性和方便性的东西 - 更好地说,我会利用 VBs 的功能!
    【解决方案2】:

    sender.Text 不总是一个字符串吗?那么值的类型可以在编译时推断出来,让后者成为早期绑定的例子?

    【讨论】:

      【解决方案3】:

      如果您确实使用后期绑定,您可以将提取属性的方法放入具有 Option Explicit = Off 的分部类中。这样,您仍然可以在其余代码中进行类型检查。

      【讨论】:

      • 我从不使用 Option Explicit,这也是我如此热爱 VB 的原因之一
      • 我想你的意思是Option Strict
      猜你喜欢
      • 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
      相关资源
      最近更新 更多