使用AutoMapper映射相同值时出错

时间:2012-12-07 17:11:45

标签: c# automapper

我的代码失败了:

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。

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

1 个答案:

答案 0 :(得分:7)

这是一个错误。

现在您可以安装版本2.1.267。

NuGet程序包管理器控制台命令:

  

Uninstall-Package AutoMapper -Force

     

Install-Package AutoMapper -Version 2.1.267

检查此链接:

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

在里程碑:2.2.1问题#270