Rozważmy następujący scenariusz. Mam kilka klas, które mają wspólną klasę podstawową i zdefiniowałem mapowanie automatów dla każdej klasy pochodnej. Coś takiego:Jak używać Automappera do odwzorowania obiektu na nieznany typ miejsca docelowego?
class A : Base {}
class B : Base {}
class ContractA : ContractBase {}
class ContractB : ContractBase {}
void Foo()
{
Mapper.CreateMap<A, ContractA>();
Mapper.CreateMap<B, ContractB>();
}
Jak dotąd tak dobrze. Ale teraz chcę utworzyć metodę tak:
ContractBase Foo()
{
Base obj = GetObject();
return Mapper.???
}
Problem polega na tym, że wszystkie Mapa wariantów AutoMapper wymagają że albo znać typ docelowy w czasie kompilacji lub mieć obiekt tego typu dostępnych na starcie. Jest to bardzo frustrujące, ponieważ zdefiniowałem tylko jedną mapę dla każdego typu źródła. AutoMapper powinien mieć możliwość określenia typu celu, biorąc pod uwagę tylko typ źródła.
Czy jest jakiś dobry sposób obejścia tego? Chcę uniknąć tworzenia słownika mapującego typy źródłowe na typy docelowe. Chociaż to zadziałałoby, oznaczałoby to, że zasadniczo musiałbym zdefiniować dwa mapowania dla każdego typu źródła.
użycie valueinjecter.codeplex.com – Omu