Många C # programmerare använder händelser i andra klasser genom att fästa händelsehanterare till dem men har du någonsin velat genomföra en egen händelse (r) i klasser som du utvecklar? Detta är en systematisk enkel guide för att skapa dina egna händelser utan att oroa dig för att glömma något.
Steg
- 1Skapa händelsen argument klassen:
- Bestäm vad du vill kommunicera med din händelse prenumeranter (andra programmerare som kommer att fästa händelsehanterare till händelsen). Till exempel, om ditt evenemang är att meddela utvecklarna När ett värde ändras, kanske du vill berätta för dem det gamla värdet och den nya. Om du har något att meddela abonnenterna, använda klassen och hoppa över detta steg.
- Skapa en offentlig klass som heter där eventName är namnet på ditt event
- Ärva klassen från
- Skapa ett skyddat område för varje bit av data som du vill kommunicera med dina prenumeranter. Till exempel, i en händelse som kommer att meddela utvecklarna av en förändring i en sträng värde, kanske du vill berätta för dem de gamla och de nya strängar så fälten kommer att se ut: oldVal, newVal;
- Skapa en publik fastighet för varje fält du skapade i 1.4 som bara har en {fieldName;} metoden (där fieldName är namnet på det fält som du skapade i 1.4
- Skapa en privat tomt konstruktor för klassen utan genomförandet. Konstruktören bör se ut: eventName EventArgs () {}
- Skapa en offentlig konstruktor för klassen som tar så många argument som det finns fält / data. Till exempel, i en sträng värdeförändring händelse, kommer konstruktören att se ut: eventName EventArgs (oldValue, newValue) {oldVal = oldValue, newVal = newValue;}
- 2Deklarera händelsen delegaten. Om du inte skapade en händelse argument klass eftersom det inte finns någon data för att kommunicera med abonnenterna använder delegat och hoppa över detta steg. Delegaten deklarationen ska se ut: eventName Handler (avsändare, e);
- 3Deklarera själva evenemanget i innehåller klassen: använd delegat händelsehanterare du deklarerade / beslutas i 2 som händelsetyp. Deklarationen ska se ut: eventName;
- 4Deklarera händelse-bränning metoden - En skyddad virtuell metod som har exakt följande deklaration: On eventName (e) {(eventName =!) {EventName (, e);}} Använd händelsen argument klass du valt att använda i en
- 5Ring händelse-bränning metod du förklarade i 4 när händelsen inträffar. Detta är den svåraste delen. Du ska veta när händelsen du skapar kommer eld (vilka områden i koden gör att händelsen att inträffa) och anropa metoden med lämplig händelsen argumenten klassförekomst. Till exempel i strängen värdeförändring händelse, måste du se vilken kod kan orsaka detta värde för att ändra, spara sitt gamla värde före ändringen, kan koden för att ändra värdet, passerade skapa en händelse objektet arguments med de gamla och nya värdena till konstruktorn och skicka objektet till event-bränning metoden.
Tips
- Vara engagerad i namngivning som anges i den här handboken är det en de-facto-standard och de flesta NET / Mono-utvecklare använder den.
- Gör inte över kommunicera med dina prenumeranter. Med andra ord, överför inte data som inte är relaterade till händelsen.
- Välj namnet på ditt event noggrant och tydligt. Evenemang namn som "ValPsd" istället för "ValuePassed" är inte uppmuntras.
- Vanligtvis är de accessibilities används i denna artikel är fallet. Du kan dock ändra tillgängligheten av någon förklaring så länge det inte gör elementet ändras oanvändbar i andra inslag i evenemanget skapande processen.
- Undersök alla ställen i koden där händelsen skulle inträffa. Ibland orsakar mer än en bit kod händelsen till brand.
- Se upp för eventuella ändringar du gör i din klass när du deklarerar händelsen. Se om ändringen påverkar den utlösande / bränning av händelsen.
Varningar
- Om du lägger till händelsen till en i stället för ett, ta notis om följande förändringar:
- Använd "" istället för "" när du deklarerar händelsen-bränning metod 4.
- I konstruktorn för den som förklarar händelsen, måste du initiera själva händelsen eller du kommer att få ett kompileringsfel. Initiera händelser genom att skapa nya händelseobjekt handler delegat och tilldela dem till händelsen. Den initieringskod ska se ut: eventName = (), eller eventName Handler =;
Saker du behöver
- A. NET Framework installerat (antingen MS. NET Framework i Windows eller Mono på andra operativsystem).
- AC #-kompilator (CSC verktyg i MS. NET SDK, CMCS i Mono ram, eller kompilatorn ingår i. NET IDE som Visual Studio 2005/2008 för Windows eller MonoDev för Linux).
- Koden för den klass du vill lägga till händelsen.
- Vissa kod redigeringsverktyg (Notepad är tillräckligt, men Visual Studio, MonoDev, Notepad + + eller någon annan editor kan göra utveckling och kod skriva enklare).