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 具有相同的值时,我得到这个异常:

已添加具有相同密钥的项目。

如果他们有不同的价值观,一切都会奏效。我使用 AutoMapper 2.2.0。

我做错了什么还是一个错误?我该如何解决?

4

1 回答 1

7

这是一个错误。

现在您可以安装版本 2.1.267。

NuGet包管理器控制台命令:

卸载包 AutoMapper -Force

安装包 AutoMapper -版本 2.1.267

检查此链接:

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

在里程碑中:2.2.1 issue #270

于 2012-12-07T18:17:23.623 回答