我已经使用Automapper一段时间了,它的工作非常整洁。 我有以下映射:
Mapper.CreateMap<Models.MyModel,Entities.MyEntity>();
有任何方法,只要typeof(Models.MyModel)
提交typeof(Entities.MyEntity)
,
答案 0 :(得分:10)
您可以使用TypeMap
方法获取所有已注册的Mapper.GetAllTypeMaps()
(Automapper的类型,用于存储源 - 目标类型对和其他与地图相关的信息)。
使用类型地图,您可以搜索您的来源类型:
[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);
}
答案 1 :(得分:1)
另一种解决方案比使用AutoMapper的ResolveTypeMap
功能更清晰:
var typeMap = Mapper.Configuration.ResolveTypemap(
typeof(Models.MyModel), //source type
typeof(Entities.MyEntity) //destination type
);
var destinationType = typeMap.DestinationType;
此外,您可以传入基本类型作为目标类型(此处为Entities.MyEntity
),并且automapper将返回派生类型。