自动映射器 - 将 2 个枚举值映射到 1 个值

本文关键字:映射 枚举 个值 | 更新日期: 2023-09-27 18:37:04

我是自动映射器的完全菜鸟,我想知道是否可以将源中的 2 个枚举值映射到目标中的 1 个枚举值。

在下面的例子中,我想将VisaCredit和VisaDebit 映射到Visa。

源:

public enum CardType { VisaCredit, VisaDebit, MasterCard, AmericanExpress, SwitchMaestro }

目的地:

public enum CardType { Visa, MasterCard, AmericanExpress, SwitchMaestro }

自动映射器 - 将 2 个枚举值映射到 1 个值

您可以为这些类型创建映射,然后定义自定义转换器:

Mapper.CreateMap<X.CardType, Y.CardType>().ConvertUsing(CardTypeConverter.Convert);

您的卡片类型映射函数将如下所示(为简洁起见,省略了其他映射):

public class CardTypeConverter
{
    public static Y.CardType Convert(X.CardType cardType)
    {
        switch(cardType)
        {
            ...
            case X.CardType.VisaCredit:
            case X.CardType.VisaDebit:
                return Y.CardType.Visa;
            ...
        }
    }
}

这可能不是可用于将两个枚举值映射到一个的最简洁的方法,但它应该有效。