Iteam
GitHub

Initiera objekt på en rad - Object initializer

Ursäkta för det dåliga bildskämtet – initiera en klass = första dagen i en skolklass.. ;-)

För en tid sedan skrev jag en blogg om det enklaste exemplet för integration mot Exchange. Då hade jag ännu inte lärt mig en ny teknik i C# 3.0 som heter Object initializer. Object initializer gör att man kan både initiera ett objekt och tilldela dess egenskaper på samma rad, detta är en gammal nyhet egentligen men många känner inte till den så här kommer lite bakgrundsinformation om varför den är så bra att känna till. Med hjälp av den tekniken så slipper man initiera temporära variabler för alla initieringsobjekt. Koden som produceras liknar ganska mycket JavaScript där man ofta använder detta för att skicka parametrar till metoder med hjälp av temporära objekt.

Du intierar objektet genom att lägga till {} efter din objektintiering ().

Störst effekt gör detta när man använder sig av Web Services, för problemet med SOAP Web Services är att det inte går att definiera konstruktorer på serversidan. Man måste manuellt skapa temporära objekt vilket i tidigare versioner av C# behövde göras på flera rader vilket tog lite mycket visuell plats i koden. Exchange Web Service är typiskt exempel där det här ger enorm effekt.

Exempel på kod som initieras på flera rader:

Kan nu skrivas såhär:

Dessutom får man ypperlig hjälp av Intellisence som också kommer ihåg vilka objekt du redan har angett. Lägg också märke till att du kan intiera fler objekt inne i initieraren.

Med hjälp av den här tekniken blir det kortaste Exchange kodexemplet så här "kort":

Christian Landgren
2009-02-13