![](/img/trans.png)
[英]AutoMapper Enum to byte with implemention IMapperConfigurator
[英]AutoMapper Enum Byte Typeinitializationexception
我正在嘗試使用AutoMapper來映射一個非常簡單的Enum。
此映射存在的原因是PriorityType在運行在服務器上的dotnet 4.0域模型程序集中,但是我在DataContract程序集中的dotnet 3.5中需要Dto。
public enum PriorityType// : byte
{
Low = 0,
Medium,
High,
Urgent
}
[Serializable]
public enum PriorityTypeDto// : byte
{
Low = 0,
Medium,
High,
Urgent
}
Mapper.CreateMap<PriorityType, PriorityTypeDto>();
如果我取消注釋byte
父類型(我真的不需要超過255個可能的條目!), TypeInitializationException
收到TypeInitializationException
。 也無法使用ConvertUsing解決它。
為什么圍繞byte
h?
編輯1
進一步調試AutoMapper,它本質上將檢索目標中的所有可寫屬性,並檢查具有相同名稱的相應屬性。
對於枚舉,存在一個名為value__
的字段,該字段通過AutoMapper嘗試映射的反射可見。
該錯誤與v2.2(版本2.1)不同,但在映射字節枚舉時仍然會引發異常,但在映射int32枚舉時會很好。
錯誤發生在這里,
public delegate object LateBoundFieldGet(object target);
Expression<LateBoundFieldGet> lambda =
Expression.Lambda<LateBoundFieldGet>(
Expression.Convert(member, typeof(object)),
instanceParameter);
return lambda.Compile();
lambda.Compile()
引發InvalidProgramException
。
仍在嘗試了解原因。
編輯2
也在AutoMapper GitHub上報告了該問題。
您不需要CreateMap調用-AutoMapper無需任何配置即可自動處理枚舉類型。 只需刪除CreateMap就可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.