从Automapper.Mapper获取目标类型

时间:2013-08-08 13:15:00

标签: c# automapper

我已经使用Automapper一段时间了,它的工作非常整洁。 我有以下映射:

Mapper.CreateMap<Models.MyModel,Entities.MyEntity>();

有任何方法,只要typeof(Models.MyModel)提交typeof(Entities.MyEntity)

会有什么方法吗?

2 个答案:

答案 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将返回派生类型。