Обрабатывает ли PetaPoco перечисления?

Я экспериментирую с PetaPoco, чтобы преобразовать таблицу в POCO.

В моей таблице у меня есть столбец с именем ] TheEnum . Значения в этом столбце представляют собой строки, которые представляют следующее перечисление:

public enum MyEnum
{
    Fred,
    Wilma
}

PetaPoco задыхается, когда пытается преобразовать строку «Fred» в значение MyEnum .

Это делается в GetConverter в строке:

Convert.ChangeType( src, dstType, null );

Здесь src - это «Фред» ( строка ), а dstType - typeof (MyEnum) .

Исключением является InvalidCastException , сообщающее Недопустимое приведение из System.String в MyEnum

Я что-то упустил? Есть ли что-то, что мне нужно сначала зарегистрировать?

Я решил эту проблему, добавив в метод GetConverter следующее:

if (dstType.IsEnum && srcType == typeof(string))
{
  converter = delegate( object src )
            {
                return Enum.Parse( dstType, (string)src ) ;
            } ;
}

Очевидно, я не хочу запускать этот делегат на каждом грести, так как это сильно замедлит работу. Я мог бы зарегистрировать это перечисление и его значения в словаре, чтобы ускорить процесс, но мне кажется, что что-то подобное, вероятно, уже есть в продукте.

Итак, мой вопрос: нужно ли мне делать что-то особенное, чтобы зарегистрировать мои перечисления в PetaPoco?

Обновление от 23 февраля 2012 г.

Я отправил патч некоторое время назад, но он еще не загружен. Если вы хотите его использовать, посмотрите на патч и слейте его в свой собственный код или получите только код отсюда .

18
задан Steve Dunn 23 February 2012 в 08:41
поделиться