C# 自动映射-将2个枚举值映射为1个值

C# 自动映射-将2个枚举值映射为1个值,c#,automapper,C#,Automapper,我完全不了解Automapper,我想知道是否可以将源中的2个枚举值映射到目标中的1个 在下面的示例中,我想将VisaCredit和VisaDebit映射到Visa 资料来源: public enum CardType { VisaCredit, VisaDebit, MasterCard, AmericanExpress, SwitchMaestro } 目的地: public enum CardType { Visa, MasterCard, AmericanExpress, Switch

我完全不了解Automapper,我想知道是否可以将源中的2个枚举值映射到目标中的1个

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

资料来源:

public enum CardType { VisaCredit, VisaDebit, MasterCard, AmericanExpress, SwitchMaestro }
目的地:

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

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

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

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

“大多数时候你看到一个开关语句,你应该考虑多态性。”(Martin Fowler)
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;

            ...
        }
    }
}