加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用VB.NET通过字符串名称动态调用属性

发布时间:2020-12-16 23:52:44 所属栏目:大数据 来源:网络整理
导读:我目前正在一个项目,其中一段代码看起来像这样: Select Case oReader.Name Case "NameExample1" Me.Elements.NameExample1.Value = oReader.ReadString .... Case "NameExampleN" Me.Elements.NameExampleN.Value = oReader.ReadString ....End Select 它
我目前正在一个项目,其中一段代码看起来像这样:
Select Case oReader.Name
    Case "NameExample1"
        Me.Elements.NameExample1.Value = oReader.ReadString
    ....
    Case "NameExampleN"
        Me.Elements.NameExampleN.Value = oReader.ReadString
    ....
End Select

它继续了一段时间。代码显然是冗长的,感觉像它可以改进。有什么办法动态调用一个属性在VB.NET中,这样的东西可以做:

Dim sReadString As String = oReader.ReadString
Me.Elements.InvokeProperty(sReadString).Value = sReadString
其他人完全合理??地回答,但是为了防止这是一个性能敏感的代码段,你可能想将反射调用编译成代理。

我有一个blog entry,把MethodBase.Invoke变成代表。代码是在C#中,但相同的技术也可以应用于VB.NET。要使用这个属性,使用PropertyInfo.GetSetMethod获取适当的“setter”方法,然后构建一个调用它的委托。你可以有一个地图从字段名称到“委托调用设置字段”。

只是重申,这只是真的有必要,如果它在一个性能关键的代码。否则,您可能仍然需要创建一个字典< string,PropertyInfo>以避免调用GetProperty多次,但将其转换为委托的步骤可能不值得担心。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读