AutoMapper를 사용하여 매우 간단한 Enum을 매핑하려고합니다.AutoMapper Enum Byte 타입 초기화 예외
이 매핑이 존재하는 이유는 PriorityType이 서버에서 실행되는 내 dotnet 4.0 도메인 모델 어셈블리에 있지만 내 DataContract 어셈블리에 Dto 3.5가 필요합니다. 나는 byte
부모 타입을 주석 처리를 제거하면
public enum PriorityType// : byte
{
Low = 0,
Medium,
High,
Urgent
}
[Serializable]
public enum PriorityTypeDto// : byte
{
Low = 0,
Medium,
High,
Urgent
}
Mapper.CreateMap<PriorityType, PriorityTypeDto>();
(정말 255 개 이상의 가능한 항목이 필요하지 않습니다!), 나는 TypeInitializationException
를 얻을. ConvertUsing 중 하나를 사용하여 해결하지 못했습니다.
왜 딸꾹질 주위 byte
?
편집 1
디버깅 AutoMapper은 또한, 본질적으로 이름이 같은 대응하는 속성의 검사 대상과 모든 쓰기 특성을 검색한다.
Enum의 경우 AutoMapper가 매핑하려고하는 반사음으로 볼 수있는 value__
이라는 필드가 있습니다.
오류는 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 보도했다.
작동 확인했습니다. –
'바이트'에서 'enum'('System.DayOfWeek')으로 매핑하려고 할 때 오류가 발생합니다. 버전 3.3.1 사용 (현재 업그레이드 할 수 없음) – silkfire