5

私は失敗するこのコードを持っています:

internal class Program
{
    private static void Main()
    {
        Mapper.CreateMap<SourceFoo, TargetFoo>();
        Mapper.CreateMap<string, Stuff>()
            .ForMember(dest => dest.Value, opt => opt.MapFrom(src => src))
            .ForMember(dest => dest.IgnoreMe, opt => opt.Ignore());

        var source = new SourceFoo
            {
                Stuff = "a",
                Stuff2 = "a"
            };
        var target = new TargetFoo
            {
                Stuff = new Stuff(),
                Stuff2 = new Stuff()
            };
        Mapper.Map(source, target);

        Console.WriteLine(target.Stuff.Value);
        Console.WriteLine(target.Stuff2.Value);
        Console.ReadLine();
    }
}

public class SourceFoo
{
    public string Stuff { get; set; }

    public string Stuff2 { get; set; }
}

public class TargetFoo
{
    public Stuff Stuff { get; set; }

    public Stuff Stuff2 { get; set; }
}

public class Stuff
{
    public string Value { get; set; }
    public bool IgnoreMe { get; set; }
}

Stuff / Stuff2の値が同じ場合、次の例外が発生します。

同じキーのアイテムはすでに追加されています。

それらが異なる値を持っている場合、すべてが機能します。AutoMapper2.2.0を使用しています。

私は何か間違ったことをしましたか、それともバグですか?どうすれば解決できますか?

4

1 に答える 1

7

バグです。

これで、バージョン 2.1.267 をインストールできます。

NuGetパッケージ マネージャー コンソール コマンド:

アンインストール-パッケージ AutoMapper -強制

インストールパッケージ AutoMapper - バージョン 2.1.267

このリンクを確認してください:

https://github.com/AutoMapper/AutoMapper/issues/250

マイルストーン: 2.2.1 issue #270

于 2012-12-07T18:17:23.623 に答える