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

<<  marts 2010  >>
mationtofr
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

View posts in large calendar

RecentComments

Comment RSS