CodeGo.net>如何正确地使用自动映射器将布尔映射到枚举?

有人可以显示将bool属性映射为枚举类型的示例吗?我担心空成员的数量减少.
我需要这样的东西:

将属性值空为第一个枚举值;

0至一秒;

1至最后;

解决方法:

不幸的是,如此处AutoMapper null source value and custom type converter, fails to map?所示,您不能直接将“ null”映射到某些内容,因为null映射将始终返回default(T),因此您无法执行以下操作:

    CreateMap<bool?, MyStrangeEnum>()
        .ConvertUsing(boolValue => boolValue == null
            ? MyStrangeEnum.NullValue
            : boolValue.Value ? MyStrangeEnum.True : MyStrangeEnum.False);

另一方面,如果映射对象属性,它将起作用:

public class MapperConfig : Profile
{
    protected override void Configure()
    {
        CreateMap<Foo, Bar>()
            .ForMember(dest => dest.TestValue,
                e => e.MapFrom(source =>
                    source.TestValue == null
                        ? MyStrangeEnum.NullValue
                        : source.TestValue.Value ? MyStrangeEnum.True : MyStrangeEnum.False));
    }
}

public class Foo
{
    public Foo()
    {
        TestValue = true;
    }
    public bool? TestValue { get; set; }
}

public class Bar
{
    public MyStrangeEnum TestValue { get; set; }
}

public enum MyStrangeEnum
{
    NullValue = -1,
    False = 0,
    True = 1
}
上一篇:CodeGo.net>如何注入与Autofac AutoMapper?


下一篇:c# – 使用AutoMapper,“相同类型的实体已经具有相同的主键值”错误