我有以下类结构:
public class A
{
public bool Property1 { get; set; }
public bool Property2 { get; set; }
}
public class ContainerForA
{
public A A { get; set; }
}
public class A1
{
public bool Property1 { get; set; }
}
public class ContainerForA1
{
public A1 A { get; set; }
}
我为这组类创建了一个映射:
Mapper.CreateMap<A1, A>();
Mapper.CreateMap<ContainerForA1, ContainerForA>();
我创建了这组类的一个实例:
var cnt_a = new ContainerForA()
{
A = new A()
{
Property1 = false,
Property2 = true
}
};
var cnt_a1 = new ContainerForA1()
{
A = new A1()
{
Property1 = true
}
};
如果我打电话Mapper.Map(cnt_a1.A, cnt_a.A)
,我会得到我期望的结果:对象cnt_aProperty1
的两个属性 (和)都是trueProperty2
但是,如果我打电话给Mapper.Map(cnt_a1, cnt_a)
我,我会得到 true forProperty1
和 false for Property2
。有人可以解释我为什么吗?是否有任何选择让我以这种方式声明我的映射,这样我就不会丢失目标对象中存在但不在源对象中的属性?