HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Függvény meghívása az osztály és a függvény neve alapján


Példaprogram letöltése

6154 bájt

Ebben a példában egy olyan megoldást keresünk, melynek segítségével képesek leszünk arra, hogy egy tetszőleges osztály tetszőleges függvényét meghívjuk, ehhez mindössze az osztály megnevezésére, illetve a függvény nevére lesz szükségünk sztringként.

Első lépésként készítsünk egy osztályt Class1 néven, melyben létrehozunk egy függvényt Method1 néven, amely egyszerűen csak megjelenít egy üzenetablakot a képernyőn. Ezt a függvényt fogjuk majd aktiválni.
  Public Sub Method1()
    MessageBox.Show("Method1")
  End Sub
Készítünk tehát egy függvényt, mely megvalósítja a fent leírt funkciót. Ez lesz az InvokeFunction, melynek első sztring paraméterében az osztály nevét, míg a másodikban a futtatandó függvény nevét kell megadnunk. Első lépésként az osztály név alapján egy Type osztályt kell létrehoznunk, ehhez a GetType függvényt használhatjuk. Ahhoz, hogy ennek az osztálynak egy függvényét elérhessük, szükségünk lesz ennek az osztálynak egy példányára. A létrehozott Type típust felhasználva az Activator osztály CreateInstance függvénye elkészíti ezt.
  Private Sub InvokeFunction(ByVal className As String, ByVal functionName As String)
    Dim t As Type = Type.GetType(className)
    Dim obj As Object = System.Activator.CreateInstance(t)   
A létrejött objektumnak szintén lekérjük a típusát a GetType függvénnyel, melyet ismét Type osztály típusban kapunk meg. Ez rendelkezik egy InvokeMember függvénnyel, mely képes arra, hogy egy név alapján azonosított függvényt meghívjon. Ezt a nevet kell az első paraméterben átadnunk.
   obj.GetType().InvokeMember(functionName, BindingFlags.Default Or BindingFlags.InvokeMethod, Nothing, obj, New Object() {})
  End Sub 'InvokeFunction
Az elkészült InvokeFunction függvényt most már egyszerűen használhatjuk. Csak megadjuk annak az osztálynak és függvénynek a nevét, melyet meg szeretnénk hívni.
  Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles button1.Click
    InvokeFunction("Activator.Class1", "Method1")
  End Sub

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |