AutoMapper从KeyValuePair元素到实体

时间:2013-07-07 09:39:30

标签: c# automapper

我有List<KeyValuePair<string,string>>有2个要素。 1)Key = AgregateOn    价值=金额/重量/数量

2)Key = Max / Min    值=十进制值(金额/重量)或int(数量)

//我有界面

public interface IQuantityRestriction
{
    int? MinQuantity { get; set; }
    int? MaxQuantity { get; set; }
    decimal? MinAmount { get; set; }
    decimal? MaxAmount { get; set; }
    decimal? MinWeight { get; set; }
    decimal? MaxWeight { get; set; }
}

因此,我如何使用AutoMapper ConfigurationData(KeyValuePair List)将此IQuantityRestriction? for example <AgregateOn,Quantity> , <Max,5>的地图映射到IQuantityRestriction,其属性MaxQuantity = 5.是否可以?

1 个答案:

答案 0 :(得分:2)

我认为Automapper的使用不会有什么好处。它无法猜测某些内容应该通过列表中第一项的值与第二项中的键一起映射,而第二项中的值应该被解析为十进制。你只能手动完成所有这些工作。例如。使用Automapper映射配置将如下所示:

Mapper.CreateMap<List<KeyValuePair<string, string>>, QuantityRestriction>()
        .AfterMap((src, qr) =>
        {
            switch (src[0].Value)
            {
                case "Quantity":
                    switch (src[1].Key)
                    {
                        case "Max":
                            qr.MaxQuantity = Int32.Parse(src[1].Value);
                            break;
                        case "Min":
                            qr.MinQuantity = Int32.Parse(src[1].Value);
                            break;
                    }
                    return;
                // case "Amount"
                // case "Weight"
            }
        });

这没有比没有自动映射的映射更好。