Automapper不会填充目标对象

时间:2017-06-02 14:37:03

标签: c# automapper

我使用Automapper CreateMissingTypeMaps选项设置为true。如果我尝试填充相同类型的现有对象,则它不起作用。

class A
{
    public string X { get; set; }
}

var config = new MapperConfiguration(cfg => cfg.CreateMissingTypeMaps = true);
var mapper = config.CreateMapper();
var a1 = new A { X = "sample" };
var a2 = new A();
mapper.Map(a1, a2); // a2.X was not set

如果我创建一个相同类型的新对象,它可以正常工作

var a3 = mapper.Map<A>(a1); // a3.X is set

如果我填充不同类型的现有对象,它也可以

class B
{
    public string X { get; set; }
}

var b = new B();
mapper.Map(a1, b); // b.X is set

但是,如果我尝试填充相同类型的现有对象,则不会。这是Automapper中的错误还是我错过了什么?

1 个答案:

答案 0 :(得分:1)

出于某些原因,这是预期的行为https://github.com/AutoMapper/AutoMapper/issues/2129。映射到相同类型不支持CreateMissingTypeMaps。使其工作的唯一方法是明确配置映射:

var config = new MapperConfiguration(cfg => cfg.CreateMap<A, A>());