AutoMapper 为可选布尔映射 false,即使可选布尔为 null
AutoMapper is mapping false for an optional bool even when the optional bool is null
我对我的应用程序中的代码片段有疑问。 x.UsesFeature 和 Person.UsesFeature 都是 optional bool (bool?) 类型。当 src.Person.UsesFeature = null 时,将计算三元运算符的右侧。我的理解是bool的默认值?一片空白。但是当完成映射时,x.UsesFeature 设置为 False,而不是 null。为什么会这样?
var config = new MapperConfiguration(cfg => cfg.AddProfile<TestProfile>());
。
.
.然后当我在那个 TestProfile class
中映射 属性
.ForMember(x => x.UsesFeature, opt =>
{
opt.MapFrom(src => src.User.UsesFeature.HasValue ? src.User.UsesFeature.Value : default);
})
这不是 Automapper 问题,如果您执行以下操作,您会看到它设置为 false
:
bool? foo = null;
var bar = foo.HasValue ? foo.Value : default;
但是,只需将默认值更改为 default(bool?)
即可解决您的问题。
bool? foo = null;
var bar = foo.HasValue ? foo.Value : default(bool?);
我对我的应用程序中的代码片段有疑问。 x.UsesFeature 和 Person.UsesFeature 都是 optional bool (bool?) 类型。当 src.Person.UsesFeature = null 时,将计算三元运算符的右侧。我的理解是bool的默认值?一片空白。但是当完成映射时,x.UsesFeature 设置为 False,而不是 null。为什么会这样?
var config = new MapperConfiguration(cfg => cfg.AddProfile<TestProfile>());
。 . .然后当我在那个 TestProfile class
中映射 属性 .ForMember(x => x.UsesFeature, opt =>
{
opt.MapFrom(src => src.User.UsesFeature.HasValue ? src.User.UsesFeature.Value : default);
})
这不是 Automapper 问题,如果您执行以下操作,您会看到它设置为 false
:
bool? foo = null;
var bar = foo.HasValue ? foo.Value : default;
但是,只需将默认值更改为 default(bool?)
即可解决您的问题。
bool? foo = null;
var bar = foo.HasValue ? foo.Value : default(bool?);