Рассмотрим следующий сценарий. У меня есть несколько классов, которые имеют общий базовый класс, и я определил отображение автомата для каждого производного класса. Примерно так:
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 Map требуют, чтобы я либо знал тип назначения во время компиляции, либо имел объект этого типа, доступный во время выполнения. Это серьезно расстраивает, поскольку я определил только одну карту для каждого типа источника. AutoMapper должен иметь возможность определять тип назначения, учитывая только тип источника.
Есть ли какой-нибудь хороший способ обойти это? Я хочу избежать создания словаря, отображающего исходные типы для целевых типов. Хотя это сработает, это будет означать, что мне, по сути, придется определять два сопоставления для каждого типа источника.