0

我有List<KeyValuePair<string,string>>2 个元素。1) 键 = AgregateOn 值 = 数量/重量/数量

2)键=最大值/最小值=十进制值(数量/重量)或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; }
}

那么我如何将它从这个映射ConfigurationData(KeyValuePair List)IQuantityRestrictionAutoMapper? for example <AgregateOn,Quantity> , <Max,5>应该映射到IQuantityRestriction属性 MaxQuantity = 5。这可能吗?

4

1 回答 1

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"
            }
        });

这并不比没有 Automapper 的映射好。

于 2013-07-07T11:03:14.857 回答