Je travaille actuellement sur un projet où une section du code ressemble à ceci:invoquez propriétés par nom Dynamiquement de chaîne en utilisant VB.NET
Select Case oReader.Name
Case "NameExample1"
Me.Elements.NameExample1.Value = oReader.ReadString
....
Case "NameExampleN"
Me.Elements.NameExampleN.Value = oReader.ReadString
....
End Select
Il continue pendant un certain temps. Le code est évidemment verbeux et il sent comme il pourrait être amélioré. Est-il possible d'invoquer dynamiquement une propriété VB.NET telle que quelque chose comme cela peut être fait:
Dim sReadString As String = oReader.ReadString
Me.Elements.InvokeProperty(sReadString).Value = sReadString
CallByName semble plus simple. En quoi cela diffère-t-il de la réflexion en termes de performance? – EndangeredMassa
Je crois que CallByName utilise la réflexion en interne, et je suspecte appliquer diverses manigances VB-spécifiques pour la compatibilité descendante. Testez-le, mais je doute fort que vous le verrez aussi rapide qu'un délégué. Oui, utiliser MakeDelegate est plus compliqué, mais beaucoup plus performant que la réflexion. –
votre lien d'entrée de blog est cassé – Fredou