2012-06-14 54 views
3

我是Automapper的完整noob,我想知道是否可以將源中的2個枚舉值映射到目標中的1。Automapper - 將2枚舉值映射爲1值

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

來源:

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

目的地:

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

回答

3

您可以爲這些類型的映射,然後定義自定義轉換器:

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; 

      ... 
     } 
    } 
} 

這可能不是用於將兩個枚舉值映射到一個的最簡潔的方法,但它應該可以工作。

+0

乾杯克里斯,這是完美的工作。 – BrightonDev

+0

「大多數時候你看到一個switch語句,你應該考慮多態。」 (馬丁福勒) – thepirat000