Kezdőoldal » Számítástechnika » Programozás » Eseménykezelés C#-ban delegált...

Eseménykezelés C#-ban delegálttal, hogyan kell csinálni?

Figyelt kérdés

Van négy különböző metódusom, eltérő osztályokban.

Azt szeretném, hogy ha valamelyik dolgozik egy objektummal, akkor egy ötödik, naplózó metódus objektumként kapja meg az adott objektumot + hogy mi történt vele (enummal kifejezve), és ezt fonja be egy láncolt listába.

Ezt kéne eseménykezeléssel megoldani, csak még mindig igazán tudom/értem, hogy ez hogy működik, hogy kell deklarálni a delegáltat, hol az eventet, hol kell példányosítani, ki mit ad át kinek, stb.

Valaki felvázolná nekem?



2017. máj. 5. 19:52
 1/4 anonim ***** válasza:
0%

Csillió helyen le van írva a neten.

Mi a szarnak leírna 28 milliomodjára is?

2017. máj. 5. 20:03
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:
Hogy jobban megértsem?
2017. máj. 5. 20:03
 3/4 anonim ***** válasza:
0%
Bullshit.
2017. máj. 5. 20:07
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:
90%

[link]


Az esemény a programozásban azt jelenti, hogy x osztály kiszól a világba, hogy történt vele valami. Pl. ha rákattintasz egy gombra, akkor az a háttérben egy eseményt csattint el. Az esemény egy delegált, tehát egy olyan változó, ami függvényt tárol el. Az esemény - mint függvény - két paraméterű, az első az object sender, ami az az objektum, ami elcsattintotta az eseményt, és az EventArgs e, ami az EventArgs-ból származó tetszőleges osztály lehet, és az esemény paramétereit tartalmazza. Esetedben az enumot. Amikor belépsz a függvénybe, elcsattintod az eventet, úgy, hogy MethodCalled?.Invoke(this, new MethodCalledEventArgs() {EnumValue = MyEnum.DesiredValue});


Hogy ennek legyen hatása, az objektum megalkotása után, de a metódus meghívása előtt a loggernek fel kell íratkozni rá:


var log = new ErrorLogger();

var obj = new MyObject();


obj.MethodCalled += log.HandleMethodCalled;

obj.Method();


ahol a log.HandleMethodCalled egy metódus (nem kell publikusnak lennie, sőt!), ami void visszatérési értékű, és van egy object sender, és egy EventArgs e paramétere. Ha elcsattan az event, akkor ez háttérszálon meghívódik, és a logger osztályodban láncolt listázol. A láncolt lista megvalósítását vettétek előadáson és gyakorlaton is.

2017. máj. 5. 21:04
Hasznos számodra ez a válasz?

További kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!