使用automapper更新目标对象并将可为null的类型属性值设置为null

本文关键字:null 类型 属性 设置 更新 automapper 目标对象 使用 | 更新日期: 2023-09-27 17:57:31

似乎忽略了源中可为null的类型属性,并且没有将其复制到目标。

考虑以下类别:

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

但我不想按每个属性设置,你能在全局范围内设置吗?或者还有其他方法可以实现这一点吗?

使用automapper更新目标对象并将可为null的类型属性值设置为null

似乎为每个可为null的类型创建映射就像:

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

似乎可以解决问题。但我更希望有一个完整的解决方案,包含所有可为null的类型,然后逐个指定它们。很容易错过什么。