【问题标题】:AutoMapper inherited mapping not workingAutoMapper 继承的映射不起作用
【发布时间】:2015-12-08 17:22:36
【问题描述】:

我有三个业务对象:

public abstract class PayCaddyEntity : IPayCaddyEntity
{
    protected PayCaddyEntity()
    {
        if (IsPopulated && string.IsNullOrWhiteSpace(Id))
        {
            Id = Guid.NewGuid().ToString();
        }
    }
    ...
}

PayCaddyEntity 基本上只是提供了一个通用的Id 属性并充当我可以在通用约束中使用的“标记”。

public abstract class PayCaddyMessage : PayCaddyEntity
{
    public string Subject { get; set; }
    public ApplicationUser Sender { get; set; }
    public ApplicationUser Receiver { get; set; }
    public DateTime? TimeSent { get; set; }
    public DateTime? TimeReceived { get; set; }
}

public class BetPaymentOffer: PayCaddyMessage
{        
    public string Description { get; set; }
    public int Amount { get; set; }
    public bool PaymentAccepted { get; set; }
}

我已尝试将它们映射到通用视图模型,如下所示:

Mapper.CreateMap<PayCaddyMessage, BetPaymentOfferViewModel>()
    .Include<BetPaymentOffer, BetPaymentOfferViewModel>();
Mapper.CreateMap<BetPaymentOffer, BetPaymentOfferViewModel>();

var offer = new BetPaymentOffer { Sender = GetCurrentUser() };
var model = Mapper.Map<BetPaymentOfferViewModel>(offer);

派生类上设置的基类属性未映射。在model 中,Sender 为空。我做错了什么?

【问题讨论】:

    标签: .net asp.net-mvc mapping automapper


    【解决方案1】:

    AutoMapper 4.0 中的继承发生了变化——为了修复一些场景,继承链是在配置时计算的。配置后调用Mapper.Configuration.Seal(),或者更好的是,使用Mapper.Initialize()而不是Mapper.CreateMap

    【讨论】:

      猜你喜欢
      • 2017-03-13
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多