我的代码失败了:
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。
我做错了什么或者它是一个错误?我该如何解决?
答案 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