c# - Automapper - 将 2 个枚举值映射到 1 个值

标签 c# automapper

我完全是 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);

您的卡类型映射函数看起来与此类似(为简洁起见省略了其他映射):

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;

            ...
        }
    }
}

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

关于c# - Automapper - 将 2 个枚举值映射到 1 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11031016/

相关文章:

c# - 将log4net文件推送到ElasticSearch

c# - 将多个源属性映射到单个目标属性

automapper - 如何将 int 映射到 bool 值

Textbox_TextChanged 事件期间 C# 内存访问冲突(使用数据库)

c# - 使用现有对象数据填充新对象

c# - IServiceCollection 不包含 AddHttpClient 的定义

c# - 使用 Automapper 覆盖现有映射

c# n-ary树的深拷贝

automapper - 使用 AutoMapper 进行条件投影

c# - 按条件使用 Automapper 合并两个集合