Mange C #-programmerere bruke hendelser i andre klasser ved å feste hendelseshåndterere til dem, men har du noen gang ønsket å implementere din egen hendelse (r) i klasser som du utvikler? Dette er en systematisk enkel guide til å lage dine egne hendelser uten å bekymre deg for å glemme noe.
Trinn
- 1Lag arrangementet argumenter klassen:
- Bestem hva du ønsker å kommunisere med ditt arrangement abonnenter (andre programmerere som vil feste hendelseshåndterere til ditt arrangement). For eksempel, hvis arrangementet er å varsle utviklere når en verdi endres, kan det være lurt å fortelle dem den gamle verdien og den nye. Hvis du har ingenting å kommunisere til abonnenter, bruke klassen og hoppe over dette trinnet.
- Opprett en offentlig klasse kalt der EventName er navnet på ditt arrangement
- Arv klassen fra
- Lag en beskyttet felt for hver bit av data du vil kommunisere med abonnenter. For eksempel, i en hendelse som vil varsle utviklere om en endring i en streng verdi, kan det være lurt å fortelle dem de gamle og de nye strenger så feltene vil se ut: oldVal, newVal;
- Opprett en offentlig eiendom for hvert felt du opprettet i 1.4 som bare har et {FieldName;} metoden (der FieldName er navnet på feltet du opprettet i 1.4
- Opprett et privat tomt konstruktør for klassen med ingen implementering. Konstruktøren skal se ut: EventName EventArgs () {}
- Opprett en offentlig konstruktør for klassen som tar så mange argumenter som det er felt / data. For eksempel, i en streng verdiendring hendelse, vil konstruktøren se slik ut: EventName EventArgs (oldValue, NewValue) {oldVal = oldValue; newVal = NewValue;}
- 2Erklære hendelsen delegat. Hvis du ikke har opprettet en hendelse argumenter klasse fordi det er ingen data å kommunisere med abonnenter, bruk representanten og hoppe over dette trinnet. Representanten erklæringen skal se ut: EventName Handler (avsender, e);
- 3Erklære selve arrangementet i inneholder klassen: bruke arrangementet handler delegat du erklært / besluttet i to som arrangementet type. Erklæringen skal se ut: EventName;
- 4Erklære event-firing metode - En beskyttet virtuell metode som har nøyaktig følgende erklæring: På EventName (e) {(EventName =!) {EventName (e);}} Bruk arrangementet argumenter klassen du valgte å bruke i en
- 5Ring event-firing metode du erklært i fire når hendelsen oppstår. Dette er den vanskeligste delen. Du bør vite når hendelsen du oppretter vil brann (hvilke områder i koden fører hendelsen til å skje) og kaller metoden med den aktuelle hendelsen argumenter klassen forekomst. For eksempel, i strengen verdiendring hendelse, må du se hva koden kan forårsake denne verdien til å endre, lagre sin gamle verdi før endringen, la koden for å endre verdien, passerte opprette en hendelse argumenter objekt med den gamle og nye verdier til konstruktøren og passerer objektet til event-avfyring metoden.
Tips
- Være forpliktet til navnepraksisen nevnt i denne veiledningen, er det en de-facto standard, og de fleste net / Mono utviklere bruke den.
- Ikke over kommunisere til abonnenter. Med andre ord, ikke overføre data som ikke er knyttet til hendelsen.
- Velg navnet på ditt arrangement nøye og tydelig. Event navn som "ValPsd" i stedet for "ValuePassed" er ikke oppmuntret.
- Vanligvis er de accessibilities brukt i denne artikkelen tilfelle. Du kan imidlertid endre tilgjengeligheten av enhver erklæring, så lenge det ikke gjengi element forandret ubrukelig av andre elementer i arrangementet prosessen.
- Undersøke alle steder i koden der hendelsen kan oppstå. Noen ganger fører til mer enn ett stykke kode arrangementet til brann.
- Se etter eventuelle endringer du gjør i klassen din etter at du erklære hendelsen. Se om endringen påvirker den utløsende / avfyring av hendelsen.
Advarsler
- Hvis du legger arrangementet til en i stedet for en, ta varsel av følgende endringer:
- Bruk "" i stedet for "" når erklære event-firing metode i fire.
- I konstruktøren av den som erklærer arrangementet, må du starte selve arrangementet, eller du får en kompileringsfeil. Initialiser hendelser ved å opprette nye event handler delegere gjenstander og tildele dem til hendelsen. Initialisering koden skal se slik ut: EventName = (); eller EventName Handler =;
Ting du trenger
- A. NET Framework installert (enten MS. NET rammeverket på Windows eller Mono på andre operativsystemer).
- AC # kompilator (CSC verktøy i MS. NET SDK, CMCs i Mono rammeverket, eller kompilatoren inkludert i. NET IDE som Visual Studio 2005/2008 for Windows eller MonoDev for Linux).
- Koden av klassen du ønsker å legge til hendelsen.
- Noen kode redigeringsverktøy (Notepad er nok, men Visual Studio, MonoDev, Notepad + + eller andre redigeringsprogram kan gjøre utvikling og kode skrivingen enklere).