源中的可空类型属性似乎被忽略,不会复制到目标。
考虑这些课程:
public class Source
{
public int? Test { get; set; }
}
public class Destination
{
public int? Test { get; set; }
}
映射:
Mapper.CreateMap<Source, Destination>();
var source = new Source() { Test = 1 };
var destination = new Destination();
Mapper.Map<Source, Destination>(source, destination);
Assert.AreEqual(source.Test, destination.Test); //true
source.Test = null;
Mapper.Map<Source, Destination>(source, destination);
Assert.AreEqual(source.Test, destination.Test); //false (null, 1)
当我使用时它起作用了:
Mapper.CreateMap<Source, Destination>()
.ForMember(m => m.Test, o => o.ResolveUsing(m => m.Test));
但我不想设置每个属性,你可以设置全局吗?或者还有其他方法可以达到这个目的吗?
答案 0 :(得分:2)
似乎为每个可空类型创建地图,如:
Mapper.CreateMap<int?, int?>()
.ConvertUsing(v => v);
似乎可以解决问题。但我宁愿拥有一个包含所有可空类型的完整解决方案,然后逐个指定它们。容易错过的东西。