Dynamický AddressOf aneb jak delegovat metodu dle názvu metody   zodpovězená otázka

VB.NET, Reflexe, .NET

Opět předem děkuji za rady. Mám následující věc k řešení :)

Standardní

AddHandler Button1.Click, New System.EventHandler(AddressOf ProcceduraKteraSeMaSpustit)

Co potřebuji

AddHandler Button1.Click, New System.EventHandler(AddressOf "ProcceduraKteraSeMaSpustit")

Převedu to do češtiny deleguji proceduru ProcceduraKteraSeMaSpustit, ale mám k dispozici pouze její název (tzn. typ string). Napadá mě použít System.Reflection. Jenom chci zdůraznit, že chci delegovat metodu (tzn. funkci nebo proceduru).

nahlásit spamnahlásit spam 0 odpovědětodpovědět
Public Class Form1
  Private _clickEventHandler As [Delegate]
  Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    'Za Form1_Click lze dosadit název libovolné metody
    's odpovídající signaturou.
    _clickEventHandler = [Delegate].CreateDelegate(GetType(EventHandler), Me, "Form1_Click")
    AddHandler Me.Click, _clickEventHandler
  End Sub
  Private Sub Form1_Click(ByVal sender As Object, ByVal e As EventArgs)
    MessageBox.Show("Klepnutí na Form1.")
  End Sub
End Class

Ještě bych poznamenal, že při použití AddHandler není třeba vytvářet instanci delegáta, kompilátor ji rozpozná a vytvoří automaticky:

'Zdlouhavé:
AddHandler Button1.Click, New System.EventHandler(AddressOf ProcceduraKteraSeMaSpustit)
'Jednodušší:
AddHandler Button1.Click, AddressOf ProcceduraKteraSeMaSpustit

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Super děkuju moc

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback