Delegate - Referenties - Reference naar instantie van object - Referenctie naar methode in object - Static methodes hebben geen referentie naar het object nodig - Van type Wire - public delegate void Wire(); Wire draad = new Wire(peertje.Burn); draad.Invoke(); - Loosely coupled. De klasse switch hoeft niets te weten van de klasse Lightbulb. Enkel een delegate reference naar de aan te roepen methode. - public delegate void Wire(bool b) - Zorgt ervoor dat er voids met een bool parameter in kunnen - Wire totaalDraad = draadjeNaarPeertje + draadjeNaarTl; - Wordt een MultiCastDelegate type - Leidt af van Delegate - .Target is de class reference - .Method is de method reference - Anonymous delegate - delegate (int n) { return n >= 13; } - (int n) => { n >= 13; } - n => n >= 13 - Delegate vs lambda - Een delegate geeft de signature aan - Een lambda is het ding wat erin past (de instantie) - Function literal - Waarde die je op kan schrijven in je programma - Waarde 3, woordje hello, zonder dat je hoeft te zeggen 'new Person...' Event - public event Wire Output; - private Wire _Output; - public void Add (Wire w) - public void Remove (Wire w) - += genereert andere code voor de Add en -= voor de Remove IL - ILDASM.exe voor het bekijken van IL Microsoft design pattern voor events - void met een sender object en een EventArgs object - public delegate void [Something]EventHandler (object sender, EventArgs e); - Delegate gaat samen met de EventArgs in een cs file - Raisen van het event gebeurt in een eigen methode - protected virtual void On[Something] ([Something]EventArgs e) - Invoke (this, e) Mock - Hand rolled Mock - Zelf geschreven mock class - Niet verstandig om meer logica te implementeren dan nodig is. Wordt alleen voor bepaalde tests gebruikt, niet voor publiekelijk gebruik