且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

当映射(automapper)需要一个枚举类型转换为布尔

更新时间:2023-02-09 21:54:36

也许我需要在CreateMap指定为我FooViewModel一些特殊成员的IsValid必须完成将其转换为我的模型的布尔?

"Maybe I need to specify in the CreateMap that for member IsValid of my FooViewModel something special must be done to convert it to a bool of my model?"

没错,你需要创建一个知道如何解决YesNoEnumViewModel布尔自定义解析:

Exactly, you need to create a custom Resolver that knows how to resolve YesNoEnumViewModel to Boolean:

Mapper.CreateMap<FooViewModel, Foo>().
     ForMember(dest => dest.IsValid, opt => opt.ResolveUsing<EnumResolver>());

internal class EnumResolver : ValueResolver<FooViewModel, bool>
{
    protected override bool ResolveCore(FooViewModel vm)
    {
        return vm.IsValid == YesNoEnumViewModel.Yes;
    }
}