Ich bin derzeit an einem Projekt arbeiten, wo ein Abschnitt des Codes wie folgt aussieht:dynamisch aufrufen Eigenschaften von string name VB.NET mit
Select Case oReader.Name
Case "NameExample1"
Me.Elements.NameExample1.Value = oReader.ReadString
....
Case "NameExampleN"
Me.Elements.NameExampleN.Value = oReader.ReadString
....
End Select
Es dauert eine Weile. Der Code ist offensichtlich ausführlich und es fühlt sich wie es könnte verbessert werden. Gibt es eine Möglichkeit, um dynamisch eine Eigenschaft in VB.NET aufrufen, so dass so etwas wie dies geschehen kann:
Dim sReadString As String = oReader.ReadString
Me.Elements.InvokeProperty(sReadString).Value = sReadString
CallByName sieht einfacher aus. Inwiefern unterscheidet sich dies in Bezug auf die Leistung von Reflection? – EndangeredMassa
Ich glaube, CallByName verwendet Reflection intern, und ich vermute, dass verschiedene VB-spezifische Spielereien aus Gründen der Abwärtskompatibilität angewendet werden. Testen Sie es, aber ich bezweifle sehr, dass Sie es so schnell wie einen Delegierten sehen werden. Ja, die Verwendung von MakeDelegate ist komplizierter, aber weitaus performanter als die Reflexion. –
Ihr Blog-Eintrag ist gebrochen – Fredou