簡體   English   中英

Automapper 幫助映射復雜的 c# 對象

[英]Automapper help mapping a complex c# objects

我正在嘗試使用AutomapperVehicle對象AutomapperMotor對象

public class Range<T>
{
    public T Min { get; set; }
    public T Max { get; set; }
}

public Enum SpeedType
{
    [Display(Name = "-")] Unknown = 0,
    [Display(Name = "M")] Manual= 1,
    [Display(Name = "A")] Automatic= 2
}

public class Vehicle
{
    public Range<string> Speed { get; set; }
}

public class Motor
{
    public Range<SpeedType?> Speed { get; set; }
}

我曾嘗試使用MapFrom (閱讀文檔)但沒有成功。 有人可以指出我正確的方向。 我什至不確定這是否可以使用Automapper進行Automapper 我過去曾使用 automapper 進行簡單的映射。

這對我有用:

Mapper.Initialize(cfg =>
{
    cfg.CreateMap<string, SpeedType?>().ConvertUsing(speed =>
    {
        switch (speed)
        {
            case "M": return SpeedType.Manual;
            case "A": return SpeedType.Automatic;
            default: return SpeedType.Unknown;
        }
    });

    cfg.CreateMap<Range<string>, Range<SpeedType?>>();
    cfg.CreateMap<Vehicle, Motor>();
});

var vehicle = new Vehicle
{
    Speed = new Range<string>
    {
        Min = "M",
        Max = "A"
    }
};

var motor = Mapper.Map<Vehicle, Motor>(vehicle);

我想出了以下映射來解決我的問題。 我寫了一個 GetEnum 自定義方法

CreateMap<Vehicle,Motor>()
.ForMember(g => g.Speed, opt => opt.MapFrom(u=> new Range<SpeedType?>
                {
                    Min = EnumHelper.GetEnum<SpeedType?>(u.Speed.Min),
                    Max = EnumHelper.GetEnum<SpeedType?>(u.Speed.Max),
                }))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM