1

似乎源中的可为空类型属性被忽略并且未复制到目标。

考虑这些类:

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));

但是我不想为每个属性设置它,你可以全局设置吗?或者有没有其他方法可以实现这一目标?

4

1 回答 1

2

似乎为每个可空类型创建映射到自身,如:

Mapper.CreateMap<int?, int?>()
    .ConvertUsing(v => v);

似乎可以解决问题。但我宁愿有一个包含所有可空类型的完整解决方案,然后一一指定它们。很容易错过一些东西。

于 2013-02-05T03:09:58.770 回答