在AutoMapper中映射对象时如何使用外部类?

时间:2017-07-31 07:27:37

标签: automapper poco dto

我有一个实体对象,以及在我的应用程序的服务层中用作返回类型的DTO对象。我想使用AutoMapper将实体对象映射到DTO对象,反之亦然。我的一种类型,要执行映射,需要一些外部类来执行(即为某些字符串属性提供翻译)。有没有方便的方法在AutoMapper中执行此操作?

1 个答案:

答案 0 :(得分:0)

如果我理解你是对的,那么这个例子就是你想要做的。 基于源属性,AutoMapper将外部转换映射到目标属性。

Dictionary<int, string> translations = new Dictionary<int, string>();
translations.Add(0, "Translation 0");
translations.Add(1, "Translation 1");
translations.Add(2, "Translation 2");

Mapper.Initialize(cfg =>
{
    cfg.CreateMap<Class1, Class2>().ForMember(a => a.Translation, b => b.MapFrom(c => translations[c.Id]));
});

Class1 src = new Class1()
{
    Id = 1
};
Class2 dest = Mapper.Map<Class1, Class2>(src);

简单的类结构:

public class Class1
{
    public int Id { get; set; }
}

public class Class2
{
    public int Id { get; set; }
    public string Translation { get; set; }
}