Получить тип назначения от Automapper.Картограф
Я уже некоторое время использую Automapper, и он работает очень аккуратно. У меня есть следующее отображение:
Mapper.CreateMap<Models.MyModel,Entities.MyEntity>();
Существует ли какой-либо способ, какой-либо метод, который при условии typeof(Models.MyModel)
вернет typeof(Entities.MyEntity)
?
2 ответа:
Вы можете получить все зарегистрированные
TypeMap
s (тип автомата для хранения пар типа источник-назначение и другой связанной с отображением информации) с помощью методаMapper.GetAllTypeMaps()
.Используя typemaps, вы можете искать исходный тип:
[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); }
Другое решение, которое немного чище, чем принятый ответ, заключается в использовании функции
ResolveTypeMap
AutoMapper:var typeMap = Mapper.Configuration.ResolveTypemap( typeof(Models.MyModel), //source type typeof(Entities.MyEntity) //destination type ); var destinationType = typeMap.DestinationType;
Кроме того, вы можете передать базовый тип в качестве типа назначения (здесь
Entities.MyEntity
), и automapper вернет производный тип.