首页 > 解决方案 > 无法使用 AutoMapper 映射到空值

问题描述

public class TestNullableString {
    public string? Test;

    public TestNullableString(string? test) {
        Test = test;
    }
}

public class TestNonNullableString {
    public string Test;
}

public class TestProfile : Profile
{
    public TestProfile() {
        CreateMap<TestNonNullableString, TestNullableString>
             .ForMember(dest => dest.Test, opt => {
                 opt.AllowNull();
                 opt.MapFrom(src => src.Test == "" ? null : src.Test);
              });
    }
}

如果我尝试从 NonNullableString 映射到 NullableString,它仍然会在映射时给我空字符串。它不会给我一个空值,即使 NonNullableString 是“”。我究竟做错了什么?

我正在使用 AutoMapper 9.0.0。

PS。我也尝试将 AllowNullDestinationValues 设置为 true,但没有任何成功。

标签: c#.net.net-coreautomapper

解决方案


CreateMap<TestNonNullableString, TestNullableString>()
            .ForMember(dest => dest.Test,
                opt => { opt.MapFrom(src => string.IsNullOrWhiteSpace(src.Test) ? null : src.Test); })
            .ConstructUsing(x => new TestNullableString(string.IsNullOrWhiteSpace(x.Test) ? null: x.Test ));

推荐阅读