2013-11-04 64 views
2

有没有办法告诉AutoMapper跳过所有空属性(因为我的对象有50个属性),然后允许某些属性为空后缀?AutoMapper跳过所有空属性,然后允许一些空值

换句话说,我宁愿不“白名单”49应该跳过的属性。我宁愿将它们全部默认为跳过,然后将其列入“白名单”以允许空值。

第一部分当然可能看起来像我想象的那样。

Mapper.CreateMap<MyClassA, MyClassB>()     
.ForAllMembers(opt => opt.Condition(srs => !srs.IsSourceValueNull)); 

回答

3

您可以使用AfterMap某些属性手动映射,并跳过所有其他空的属性:

Mapper.CreateMap<MyClassA, MyClassB>() 
     .AfterMap((a,b) => b.Foo = a.Foo) // will be mapped if Foo is null 
     .ForAllMembers(opt => opt.Condition(srs => !srs.IsSourceValueNull)); 
+1

非常感谢!这是100%的答案,超级简单! –