AutoMapper 枚举到字节并实现 IMapperConfigurator

2024-04-13

枚举定义是

public enum RowStatusEnum
{
    Modified = 1,
    Removed = 2,
    Added = 3
}

public class RowStatusEnumConvertor : IMapperConfigurator
{
    public void Cofigure()
    {
        Mapper.CreateMap<RowStatusEnum, byte>();
        Mapper.CreateMap<byte, RowStatusEnum >();
    }
}

我在 RowStatusEnumConvertor 类中使用 Implemention IMapperConfigurator 配置 autoMapper, 但无法使用此代码并且无法映射此类型,我认为我的配置不正确或不够, 请帮我

thanks


这样的事情对你有用吗?

类.cs

namespace StackOverflow.RowStatus
{
    public enum RowStatusEnum
    {
        Modified = 1,
        Removed = 2,
        Added = 3
    }
}

AutoMapperConfigurator.cs

namespace StackOverflow.RowStatus
{
    using System;
    using System.Linq;

    using AutoMapper;

    public class MyProfile : Profile
    {
        protected override void Configure()
        {
            Mapper.CreateMap<byte, RowStatusEnum>().ConvertUsing(
                x => Enum.GetValues(typeof(RowStatusEnum))
                         .Cast<RowStatusEnum>().First(y => (byte)y == x));
            Mapper.CreateMap<RowStatusEnum, byte>().ConvertUsing(
                x => (byte)x);
        }
    }
}

映射测试.cs

namespace StackOverflow.RowStatus
{
    using AutoMapper;

    using NUnit.Framework;

    [TestFixture]
    public class MappingTests
    {
        [Test]
        public void AutoMapper_Configuration_IsValid()
        {
            Mapper.Initialize(m => m.AddProfile<MyProfile>());
            Mapper.AssertConfigurationIsValid();
        }

        [TestCase(1, Result = RowStatusEnum.Modified)]
        [TestCase(2, Result = RowStatusEnum.Removed)]
        [TestCase(3, Result = RowStatusEnum.Added)]
        public RowStatusEnum AutoMapper_ConvertFromByte_IsValid(
                                                   byte rowStatusEnum)
        {
            Mapper.Initialize(m => m.AddProfile<MyProfile>());
            Mapper.AssertConfigurationIsValid();
            return Mapper.Map<byte, RowStatusEnum>(rowStatusEnum);
        }

        [TestCase(RowStatusEnum.Modified, Result = 1)]
        [TestCase(RowStatusEnum.Removed, Result = 2)]
        [TestCase(RowStatusEnum.Added, Result = 3)]
        public byte AutoMapper_ConvertFromEnum_IsValid(
                                                   RowStatusEnum rowStatusEnum)
        {
            Mapper.Initialize(m => m.AddProfile<MyProfile>());
            Mapper.AssertConfigurationIsValid();
            return Mapper.Map<RowStatusEnum, byte>(rowStatusEnum);
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AutoMapper 枚举到字节并实现 IMapperConfigurator 的相关文章

随机推荐