Home Blog

16

Maa

2008

Eventing made easy: MyEvent.Raise(this, EventArgs.Empty); PDF Afdrukken E-mail

Zoals elke developer heb ik een hekel aan repeterende code. Als C# developer ben ik nog wel eens jaloers op somige taal features van Visual Basic .NET. Een voorbeeld hiervan is het vuren van een event. VB.NET heeft hiervoor het RaiseEvent statement. Dit maakt het mogelijk om in VB.NET een event in 1 regel code te vuren:

RaiseEvent Changed(Me, EventArgs.Empty)

Het equivalent in C# kost iets meer code:

// Take a snapshop of the Changed event subscribers.
var changedEvent = Changed;
 
// Check if we have subscribers.
if(changedEvent != null)
{
  // Invoke the delegate for all subscribers.
  changedEvent(this, EventArgs.Empty);
}

De extension

Omdat het, in tegenstelling tot class methods, mogelijk is een extension method op een null reference aan te toepen zonder een ArgumentNullException om je oren te krijgen zijn er in eens meer mogelijkheden dan voorheen. We kunnen boodschappen sturen naar null referenties en kunnen op method nivo bepalden wat voor gedrag daar mee gemoeid gaat.

De volgende extension method voegt de Raise method toe aan alle EventHandler<T> types:

public static class Extensions
{
    public static void Raise<TEventArgs>(this EventHandler<TEventArgs> target,
                                         Object sender, TEventArgs e)
    {
        var targetSnapshot = target;
 
        if (targetSnapshot != null)
        {
            targetSnapshot(sender, e);
        }
    }
}

Vanaf nu kunnen we events afvuren op de volgende manier en hebben wij het net zo gemakkelijk als VB.NET programmeurs:

Changed.Raise(this, EventArgs.Empty);

Conclussie

C# is nog steeds een getypeerde taal, maar geeft ons steeds meer mogelijkheden die we terugzien komen in dynamische talen. De mogelijkheid om boodschappen naar null referenties te sturen geeft ons tal van extra mogelijkheden. Denk bijvoorbeeld ook aan een fluent interface.

Download het voorbeeld project hier: eventing.made.easy.zip
 

14

Maa

2008

Community Launch Event! PDF Afdrukken E-mail
Visual Studio 2008

Op vrijdag 28 maart organiseert Software Developer Network (SDN) in samenwerking met de .NET gebruikersgroep (dotNed) en VBcentral de community launch van Visual Studio 2008, SQL Server 2008 en Windows Server 2008. Dit evenement loopt parallel aan een reguliere Software Developer Event. Hierdoor zijn de drie Nederlandse gebruikersgroepen in staat om jou een indrukwekkend programma voor te schotelen. Deze dag bestaat uit ruim vijfentwintig sessies, verdeeld over maar liefst zeven paralleltracks. Door het brede aanbod van onderwerpen en de aanwezigheid van veel bekende en gerenommeerde sprekers, mag je dit unieke evenement niet missen!

Alle leden van de drie Nederlandse communities kunnen zich aanmelden en hebben toegang tot alle sessies van die dag. De afsluitende Algemene Ledenvergadering van de SDN is alleen toegankelijk voor SDN leden. SDN leden kunnen zich aanmelden via de gebruikelijke weg en niet SDN leden via de website van Microsoft Nederland. Het evenement vindt plaats in De Reehorst, Ede en de kosten voor niet betalende SDN leden bedragen € 50,00 inclusief BTW.

Bezoek voor meer informatie en het volledige programma de website van de SDN

 

14

Maa

2008

Microsoft's XNA Slidedeck PDF Afdrukken E-mail

De afgelopen tijd heb ik op verschillende events presentaties over Microsoft’s XNA gegeven. Hieronder is de presentatie te vinden die tijdens deze sessies getoond is.

 
<< Begin < Vorige 11 Volgende > Einde >>

Pagina 11 van 11

Connect buttons

View pjvdsande's profile on slideshare

View Pieter Joost van de Sande's profile on LinkedIn

Xbox360 Gamertag

C# MVP

Microsoft MVP logo

Twitter

Could not write to cache/twitter.cache

Quote XNA presentatie

Bedankt voor je schitterende presentatie. Ik heb niets dan positieve geluiden gehoord.

Peter Criellaard
Microsoft

Quote Coding dilemma's

Eindelijk een presentatie waarmee ik ook iets mee kan in de praktijk!

Dennis Schuuring
Max BV

Quote C# fun!

Bedankt voor de presentatie, het was voor mij 1 van de betere momenten van die dag!

Henri Koppen
Arcenus