在映射上保留 null - 不要为类型创建默认值

Ben*_* E. 4 .net c# automapper

如何让 AutoMapper 从源中保留 null?

new MapperConfiguration(cfg => cfg.CreateMap<MyModel, MyModel>()
    .ForMember(m => m.prop1, opt => opt.AllowNull())
    .ForMember(m => m.prop1, opt => opt.NullSubstitute(null))
    .ForMember(m => m.prop1, opt => opt.MapFrom(s => s.prop1))
).CreateMapper();
Run Code Online (Sandbox Code Playgroud)

prop1 是可以为空的,例如string[]

我总是得到该类型的默认值。

Mar*_*und 6

Nullnull默认情况下不允许使用目标值和集合。您可以在配置上进行设置:

configuration.AllowNullCollections = true;
configuration.AllowNullDestinationValues = true;
Run Code Online (Sandbox Code Playgroud)

您还可以通过AfterMap配置强制执行此操作:

new MapperConfiguration(cfg => cfg.CreateMap<MyModel, MyModel>()
   .AfterMap( (s,d) => d.prop1 = s.prop1 == null ? null : d.prop1 );
Run Code Online (Sandbox Code Playgroud)