AutoMapper - setting destination string to null actually makes it string.Empty

烈酒焚心 提交于 2019-12-07 13:28:56

问题


With the following mapping:

Mapper.CreateMap<ObjectA, ObjectB>()
    .ForMember(dest => dest.SomeStringProperty, opt => opt.MapFrom(src => null))

SomeStringProperty is now empty string not null (as I would expect)

Is this a bug? How can I get it to actually be null?

I see that opt.Ignore() will make it null but I actually want to do a conditional null like the following and the above simplified bug(?) is preventing this

Mapper.CreateMap<ObjectA, ObjectB>()
    .ForMember(dest => dest.SomeStringProperty, opt => opt.MapFrom(src => src.SomeOtherProp != null ? src.SomeOtherProp.Prop1 : null))

回答1:


I found the setting after looking through the source code... Confirming that this is not a bug, but in fact a configurable setting.

When I configure my mappings..

Mapper.Initialize(x =>
{
    x.AddProfile<UIProfile>();
    x.AddProfile<InfrastructureProfile>();
    x.AllowNullDestinationValues = true; // does exactly what it says (false by default)
});



回答2:


you could define map for strings using

ITypeConverter<string, string>

and when you convert return null if null. I think it is by design that you get an empty string and I even find this natural and useful myself but I may of course be wrong ;)

I can provide more precise code than above upon request but reckon you know what you're doing.



来源:https://stackoverflow.com/questions/1526813/automapper-setting-destination-string-to-null-actually-makes-it-string-empty

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!