簡體   English   中英

AutoMapper枚舉字節類型初始化異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM