Рассмотрим следующий сценарий. У меня есть несколько классов, которые имеют общий базовый класс, и я определил отображение автомпера для каждого производного класса. Примерно так:
class A : Base {}
class B : Base {}
class ContractA : ContractBase {}
class ContractB : ContractBase {}
void Foo()
{
Mapper.CreateMap<A, ContractA>();
Mapper.CreateMap<B, ContractB>();
}
Пока все хорошо. Но теперь я хочу создать такой метод:
ContractBase Foo()
{
Base obj = GetObject();
return Mapper.???
}
Проблема в том, что все варианты карт AutoMapper требуют, чтобы я либо знал тип назначения во время компиляции, либо чтобы объект этого типа был доступен во время выполнения. Это серьезно расстраивает, так как я определил только одну карту для каждого типа источника. AutoMapper должен иметь возможность выводить тип назначения, учитывая только тип источника.
Есть ли хороший способ обойти это? Я хочу избежать создания словаря, сопоставляющего типы источников с типами назначения. Хотя это будет работать, это будет означать, что мне по сути придется определить два сопоставления для каждого типа источника.