piątek, 26 lutego 2010

AutoMapper. A co jeśli w naszym kodzie brak konwencji?

 copier Automapper jest biblioteką ułatwiającą konwersje między dwoma typami. Wykorzystując wspomnianą bibliotekę nie ma już konieczności pisania przydługiego kodu własnych konwerterów. Jak to się dzieje, że Automapper potrafi z typu:

public class BlogPost
{
    public string Title;
    public string Description;
    public string Body;
    public int Level;
    public DateTime CreationDate;
}

wyczarować np. klasę?:

public class BlipPost
{
    public string BlipBody;
    public DateTime DateOfBlip;
}

za pomocą wywołania jednej linijki kodu?:

//konwertujemy obiekt myPostObject z typu źródłowego (BlogPost) do typu docelowego (BlipPost)
Mapper.Map<BlogPost, BlipPost>(myPostObject); 

Otóż domyśla się on - za pomocą ogólnych konwencji nazewniczych - jakiemu typowi z klasy docelowej (BlipPost) będzie odpowiadał typ z klasy źródłowej (BlogPost). Świetnie. Jednak niechaj będzie błogosławiony ten, którego kod konwencji się trzyma. Prosty przykład, dla którego Automapper polegnie na samym wejściu:

public class Osoba
{
    public string Imie;
    public string NazwiskoRodowe;
    public string Nazwisko;
    public DateTime Urodziny;
}

Uwierzcie lub nie, ale Automapper nie da rady sobie zmapować tak prostej klasy na nic – jedynym efektem jego pracy będzie przepiękny wyjątek mapowania.

Wstań, powiedz nie jestem sam…

Można by Automapera o kant … potłuc, gdyby nie umożliwiał poradzenie sobie z podobnymi problemami.

Z pomocą przychodzi własny TypeConverter, który po zaimplementowaniu jednej metody Convert będzie płodził nowe klasy docelowe w sposób jaki mu powiemy.

public class ToBlipPostConverter : ITypeConverter<BlogPost, BlipPost>
{
#region ITypeConverter<BlogPost, BlipPost> Members

public BlipPost Convert(ResolutionContext context)
{
    BlogPost old = context.SourceValue as BlogPost;
    //if old != null
    var blip = new BlipPost();
    blip.Id = old.Id;
    blip.Data = old.DataPosta;
    blip.Level = old.Poziom;
    blip.Body = old.Tresc;
    
    return blip;
}

#endregion
}

Teraz wystarczy jedynie poinformować Automappera do używania naszej klasy konwertera dla podanych typów:

Mapper.CreateMap<BlogPost, BlipPost>().ConvertUsing<ToBlipPostConverter>();

Pisanie własnych konwerterów nieco mija się z celem, jednak sygnalizuję tylko problem na jaki może się natknąć deweloper.

No i tyle. Więcej można przeczytać na stronie projektu: Type Converters.

środa, 17 lutego 2010

Konferencje .NET w najbliższym czasie

26 marzec 2010 (piątek) Poznań 4Developers
4Developers to konferencja dla programistów tworzona przez programistów. Jest to największe przedsięwzięcie tego typu w Polsce – 700 uczestników, 4 równoległe ścieżki i ponad 30 prelegentów. 4Developers to profesjonalna, techniczna konferencja przeznaczona dla developerów i managerów projektów, kadry kierowniczej działów informatycznych, a także wszystkich studentów zainteresowanych programowaniem. Zapraszamy do dyskusji, wymiany doświadczeń i szukania rozwiązań dla wyzwań związanych z tworzeniem i rozwijaniem oprogramowania. 4Developers podzielona jest na cztery niezależne ścieżki związane z technologiami i problemami spotykanymi w nowoczesnych firmach zajmujących się produkcją oprogramowania [źródło 4developers]
- Ja będę tam!

17 kwiecień 2010 (sobota) Warszawa Communities2Communities 2010
C2C to doskonała okazja do spotkania i wysłuchania sesji najwyższej klasy specjalistów z Polski i ze świata, do wymiany doświadczeń i spotkania osób o podobnych zainteresowaniach.Tegoroczna konferencja, podobnie jak ta z ubiegłego roku, obejmuje aż trzy ścieżki tematyczne: przeznaczoną dla profesjonalistów IT, SQL Server oraz .NET. Na każdą ze ścieżek przypada pięć sesji - każda z nich będzie prowadzona na poziomie 300-400 wg skali MSFT, w profesjonalny sposób, przez najlepszych specjalistów, bez zbędnego marketingowego bełkotu. Jak udowodniła zeszłoroczna konferencja, sesje na poszczególnych ścieżkach były na podobnym poziomie jak te prowadzone na konferencjach typu TechEd czy MTS. [Żródło C2c]
- Ja będę tam!

czwartek, 4 lutego 2010

Offtopic: Firefox jest wszędzie

Dziś zwróciłem uwagę na dziwnie wyglądający przycisk Start Windows 7:

1

Pomyślałem sobie: gdzieś już widziałem ten kawałek wystający poza obręb ikony… Szybkie nałożenie podejrzanej ikony (znam jedną ikonę z ogonem):

2

… i jeszcze troszkę wyostrzamy ….

3

I dostaliśmy podpalonego lista. Tylko skąd on tam się wziął?