![](/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.