2011-04-12 76 views
27

奇怪的問題 - 我想要的枚舉之間進行映射,使用AutoMapper:AutoMapper可以在值類型(枚舉)和引用類型之間映射嗎? (串)

Mapper.CreateMap<MyEnum, string>() 
    .ForMember(dest => dest, opt => opt.MapFrom(src => src.ToString())); 

不要擔心使用.ToString(),即時通訊,在現實中我使用enum本身的擴展方法(.ToDescription()),但爲了這個問題我保持簡單。

以上拋出對象引用錯誤,當我只是簡單地設置映射。

考慮到這個工程:

string enumString = MyEnum.MyEnumType.ToString(); 

我不明白爲什麼我的AutoMapper配置不。

AutoMapper可以處理這個,我做錯了什麼,或者這是一個AutoMapper的錯誤?

任何想法?

編輯

我使用自定義解析也試過:

Mapper.CreateMap<MyEnum, string>() 
       .ForMember(dest => dest, opt => opt.ResolveUsing<MyEnumResolver>()); 

public class MyEnumResolver: ValueResolver<MyEnum,string> 
{ 
    protected override string ResolveCore(MyEnum source) 
    { 
     return source.ToString(); 
    } 
} 

在同一行同樣的錯誤。 :(

回答

51

對於兩種類型,你正在做整個映射的控制,使用ConvertUsing之間的映射:

Mapper.CreateMap<MyEnum, string>().ConvertUsing(src => src.ToString()); 

所有其他方法假定你映射到目的地類型個人會員

+2

Ahh - 這很有道理,因爲我在做'.ForMember',但是我實際上並沒有試圖映射這個成員,所以我試圖映射整個對象,很好用 - 謝謝!+1並且被接受。 – RPM1984 2011-04-12 23:11:13

+0

真的很棒的解決方案。 ..! – imdadhusen 2017-05-31 10:20:26