微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我目前正在一个项目,其中一段代码看起来像这样:
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多次,但将其转换为委托的步骤可能不值得担心。

原文地址:https://www.jb51.cc/vb/256208.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐