테이블을 POCO로 변환하기 위해 PetaPoco를 실험하고 있습니다.PetaPoco는 열거 형을 처리합니까?
내 테이블에는 TheEnum
이라는 열이 있습니다. 그것은 MyEnum
값으로 문자열 "프레드"를 변환 할 때
public enum MyEnum
{
Fred,
Wilma
}
PetaPoco 초크 :이 열의 값은 다음 열거를 나타내는 문자열입니다. 여기
Convert.ChangeType(src, dstType, null);
가 src
는 "프레드"(a string
)이며 dstType
는 typeof(MyEnum)
이다
이 라인에서 GetConverter
이 방법을 수행.
예외는 내가 뭔가를 놓치고 있습니까 Invalid cast from 'System.String' to 'MyEnum'
말, InvalidCastException
입니까? 먼저 등록해야 할 것이 있습니까?
나는하여 GetConverter
방법으로 다음을 추가하여 문제를 해결있어 :
if (dstType.IsEnum && srcType == typeof(string))
{
converter = delegate(object src)
{
return Enum.Parse(dstType, (string)src) ;
} ;
}
는 분명히, 나는 그것이 엄청난 일을 늦출 수 있습니다로 모든 행에이 대리자를 실행하지 않습니다. 이 enum과 그 값을 사전에 등록하여 속도를 높일 수는 있지만, 이와 같은 것이 이미 제품에있을 가능성이 높습니다.
제 질문은 PetaPoco에 제 열거 형을 등록하는 데 특별한 조치를 취해야합니까?
업데이트 2012년 2월 23일
얼마 전 submitted a patch하지만 아직 당겨되지 않았습니다. 그것을 사용하고 싶다면, 패치를보고 자신의 코드에 병합하거나 코드 from here을 얻으십시오.
** ** 2012 년 6 월 28 일 업데이트 ** 정확한 패치는 아직 적용되지 않았지만 유사한 코드가 [v5 branch] (https://github.com/toptensoftware/PetaPoco/tree/v5)에 추가되었습니다. http://www.toptensoftware.com/Articles/137/Long-Time-No-Post-and-PetaPoco-v5 –
만약 당신이 어렵지 않다면, pls도 npoco에 패치를 제출하십시오. npoco로 전환하는 것이 좋습니다. 왜냐하면 더 많은 개발이 필요하고 PetaPoco가 가지고있는 모든 기능을 갖추고 있기 때문입니다. – AuthorProxy
** 2014 년 9 월 9 일 업데이트 ** @iano 대답은 최신 5.0.2 ** 버전에 대한 올바른 답변입니다. –