Obecnie pracuję nad projektem, gdzie sekcja kodu wygląda następująco:Dynamicznie wywołać właściwości według nazwy strun za pomocą VB.NET
Select Case oReader.Name
Case "NameExample1"
Me.Elements.NameExample1.Value = oReader.ReadString
....
Case "NameExampleN"
Me.Elements.NameExampleN.Value = oReader.ReadString
....
End Select
Kontynuuje na chwilę. Kod jest oczywiście pełen gadżetów i wygląda na to, że można go poprawić. Czy jest jakiś sposób aby dynamicznie wywołać właściwość w VB.NET tak, że coś takiego można zrobić:
Dim sReadString As String = oReader.ReadString
Me.Elements.InvokeProperty(sReadString).Value = sReadString
CallByName wygląda prościej. Czym się różni od Reflection pod względem wydajności? – EndangeredMassa
Wierzę, że CallByName używa Reflection wewnętrznie, i podejrzewam, że stosuje różne shenanigany specyficzne dla VB ze względu na kompatybilność wsteczną. Przetestuj to, ale bardzo wątpię, że zobaczysz, że jest tak szybki jak delegat. Tak, użycie MakeDelegate jest bardziej skomplikowane, ale znacznie bardziej wydajne niż odbicie. –
Twój link do wpisu w blogu jest zepsuty – Fredou