我有一个这样的源类:
public class Basket {}
像这样的目标类:
public class BasketModel
{
public string Property { get; set; }
}
以及这样的映射:
Mapper.CreateMap<Basket, BasketModel>()
.ForMember(x => x.Property, o => o.ResolveUsing(x => "anything"));
现在,我已经使原始模型中的"Property"属性成为虚拟的,并创建了一个从模型继承的新类:
public class BasketModel
{
public virtual string Property { get; set; }
}
public class BasketModel2 : BasketModel
{
public override string Property
{
get
{
return "some value";
}
}
}
我已经更新了映射:
Mapper.CreateMap<Basket, BasketModel>()
.ForMember(x => x.Property, o => o.ResolveUsing(x => "anything"))
.Include<Basket, BasketModel2>();
并创建了映射
Mapper.CreateMap<Basket, BasketModel2>()
.ForMember(x => x.Property, o => o.Ignore());
现在,当我尝试映射到 BasketModel2 而不是null
时,属性的值是"anything"
。
我在这里错过了什么?
好的,我想我在编写这段代码时有一个脑屁。 模型 2.属性永远不会为 null,因为它是一个始终返回相同字符串的 getter。我有一些重构要做,但是AutoMapper正在做它需要做的事情,我只是用错了。