0

私はList<KeyValuePair<string,string>>2つの要素を持っています。1) キー = AggregateOn 値 = 金額/重量/数量

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 を使用するメリットはないと思います。リストの最初の項目の値と 2 番目の項目のキーを組み合わせて何かをマップし、2 番目の項目の値を 10 進数に解析する必要があるとは推測できません。このすべてを手動でのみ行うことができます。たとえば、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 に答える