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?);