3

使用以下映射:

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

SomeStringProperty现在是空字符串不为空(如我所料)

这是一个错误吗?我怎样才能让它实际上为空?

我看到这opt.Ignore()会使它为空,但我实际上想做一个像下面这样的有条件的空,上面简化的错误(?)正在阻止这种情况

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

2 回答 2

7

我在查看源代码后找到了该设置...确认这不是一个错误,而实际上是一个可配置的设置。

当我配置我的映射时..

Mapper.Initialize(x =>
{
    x.AddProfile<UIProfile>();
    x.AddProfile<InfrastructureProfile>();
    x.AllowNullDestinationValues = true; // does exactly what it says (false by default)
});
于 2009-10-07T00:18:03.160 回答
1

您可以使用为字符串定义映射

ITypeConverter<string, string>

并且当您转换时,如果为 null,则返回 null。我认为这是设计使您得到一个空字符串,我什至自己也觉得这很自然且有用,但我当然可能是错的;)

我可以根据要求提供比上面更精确的代码,但估计你知道你在做什么。

于 2009-10-06T17:07:54.780 回答