c# - 无法使用 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,但没有任何成功。
解决方案
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 ));
推荐阅读
- javascript - 不能在 axios 中使用 localhost url?
- javascript - 在移动设备上默认使用悬停/活动 CSS
- c++ - 如何在 C++ 中将文件从 ext4 文件系统重命名为 ntfs 文件系统
- google-chrome - 有什么方法可以在 Google Web App 中添加或设置沙盒关键字?
- c# - 在另一个 DataTable 的中间插入一个 DataTable 中的一行
- python-3.x - 从国家和地区列表中过滤掉地区名称
- c++ - 如何使用同名父类的成员函数(通过this->)?
- graph - 如何修复 gnuplot 中的 xtics 标签重叠
- php - 无限计数器循环在php中延迟37秒
- android - 通用 Arraylist 相等列表扩展