我正在尝试使用 PetaPoco 将表格转换为 POCO。
在我的表中,我有一个名为TheEnum
. 此列中的值是表示以下枚举的字符串:
public enum MyEnum
{
Fred,
Wilma
}
当 PetaPoco 试图将字符串“Fred”转换为一个MyEnum
值时,它会窒息。
它在GetConverter
方法中执行此操作,在行中:
Convert.ChangeType( src, dstType, null );
在这里,src
是 "Fred" (a string
),并且dstType
是typeof(MyEnum)
。
例外是InvalidCastException
,说Invalid cast from 'System.String' to 'MyEnum'
我错过了什么吗?有什么需要我先注册的吗?
我通过在GetConverter
方法中添加以下内容解决了这个问题:
if (dstType.IsEnum && srcType == typeof(string))
{
converter = delegate( object src )
{
return Enum.Parse( dstType, (string)src ) ;
} ;
}
显然,我不想在每一行都运行这个委托,因为它会大大减慢速度。我可以将此枚举及其值注册到字典中以加快速度,但在我看来,这样的东西可能已经在产品中了。
所以,我的问题是,我需要做一些特别的事情来向 PetaPoco 注册我的枚举吗?
2012 年 2 月 23 日更新