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

前端之家收集整理的这篇文章主要介绍了使用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多次,但将其转换为委托的步骤可能不值得担心。

猜你在找的VB相关文章