Получить тип назначения из Automapper.Mapper
Я использовал Automapper уже некоторое время, и он работает очень аккуратно.
У меня есть следующее отображение:
Mapper.CreateMap<Models.MyModel,Entities.MyEntity>();
Есть ли способ, любой метод, который при условии, что typeof(Models.MyModel)
вернет typeof(Entities.MyEntity)
?
Ответы
Ответ 1
Вы можете получить все зарегистрированные TypeMap
(тип Automapper для хранения пар типа источника-получателя и другую относящуюся к сопоставлению информацию) с помощью метода Mapper.GetAllTypeMaps()
.
Используя типовые типы, вы можете найти тип источника:
[Test]
public void Test()
{
Mapper.CreateMap<Models.MyModel, Entities.MyEntity>();
var destination = Mapper.GetAllTypeMaps()
.First(t => t.SourceType == typeof(Models.MyModel));
Assert.AreEqual(typeof (Entities.MyEntity), destination.DestinationType);
}
Ответ 2
Другое решение, которое немного чище, чем принятый ответ, заключается в использовании функции ResolveTypeMap
для AutoMapper:
var typeMap = Mapper.Configuration.ResolveTypemap(
typeof(Models.MyModel), //source type
typeof(Entities.MyEntity) //destination type
);
var destinationType = typeMap.DestinationType;
Кроме того, вы можете передать базовый тип как тип назначения (здесь Entities.MyEntity
), а automapper вернет производный тип.