繁体   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