代码之家  ›  专栏  ›  技术社区  ›  Bart van den Burg

Automapper:忽略继承类的属性

  •  2
  • Bart van den Burg  · 技术社区  · 7 年前

    我有一个这样的源类:

    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());
    

    null ,属性的值为 "anything" .

    1 回复  |  直到 7 年前
        1
  •  0
  •   Bart van den Burg    7 年前

    好吧,我想我写这段代码的时候脑子有毛病。属性永远不会为空,因为它是一个始终返回相同字符串的getter。我有一些重构工作要做,但AutoMapper正在做它需要做的事情,我只是用错了。

    推荐文章