Handy extension

by Jesper oktober 19, 2009 08:48

Når man arbejder med anonyme klasser, kommer man fra tid til anden, ud for at skulle udlæse properties fra et anonymt objekt. Hvad gør man så, når man ikke har en type at caste til?

Ja, principielt er der kun een ting at gøre: Reflection. Det er jo en anelse besværligt, og jeg har derfor lavet en lille extension på object. Den tilføjer metoden: Get,  på alle objekter. Metoden tage et property-navn som input og returnerer et typen T eller default(T) hvis propertien ikke findes.

public static class ObjectExtension
{
    public static T Get<T>(this object container, string propertyName) where T: class
    {
        PropertyDescriptor descriptor = TypeDescriptor.GetProperties(container).Find(propertyName, true);
        if (descriptor == null)
        {
            return default(T);
        }

        return descriptor.GetValue(container) as T;
    }
}

Nu er det muligt at tilgå egenskaberne fra de anonyme objekter via en simpel metode:

var obj = new { 
    Name = "Jesper", 
    Answer = 43 
};

obj.Get<string>("Name")

Code on…

Tags:

C#

Kommentarerne er lukkede

Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen | Modified by Mooglegiant

About

Mit navn er Jesper Jensen, og jeg arbejder til dagligt som web-udvikler hos DGI, hvor mit speciale er klientside applikationer. Før det var jeg nogle år i robotbranchen, hvor jeg arbejdede med 3D simulering og system koordinering. Jeg elsker webudvikling, og specielt JavaScript har min interesse. Jeg har blogget om mine oplevelser med udvikling siden 2004

Calendar

<<  juli 2010  >>
mationtofr
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

View posts in large calendar

RecentComments

Comment RSS