как заставить subonic конвертировать строку в мой пользовательский тип - PullRequest
1 голос
/ 28 апреля 2009

Я попытался найти его в Google, но не смог найти ответ, поэтому попробую здесь. Я использую Subonic и пытаюсь заполнить объект, используя:

Model.Object o = new Select()
            .From<Object>()
            .Where("Id")
            .IsEqualTo(id)
            .ExecuteSingle<Model.Object>();

При этом я получаю сообщение об ошибке: Объект типа «System.String» нельзя преобразовать в тип «CustomType» Одно из свойств хранится в базе данных как varchar. В Model.object это свойство определяется как CustomType. Я уже добавил неявный оператор к этому типу следующим образом:

public static implicit operator CustomType(String value)
    {
        return new CustomType(value);
    }

Что я здесь не так делаю? или я что-то упустил? любая помощь приветствуется

Ответы [ 2 ]

0 голосов
/ 28 апреля 2009

Если бы это был мой проект, я бы, вероятно, создал частичный класс для Model.Object, а затем вставил бы туда метод фабрики или, возможно, другую перегрузку конструктора, которая принимает Reader. Затем вы можете использовать этот ридер для загрузки свойств по мере необходимости, применяя ваш CustomType.

0 голосов
/ 28 апреля 2009

Попробуйте реализовать свой собственный TypeConverter , чтобы можно было воссоздать ваш Model.Object из строкового представления.

EDIT . Покопавшись в коде SubSonic, я обнаружил, что это не поможет (см. this , BuildTypedResult<T>). Попробуйте реализовать IBaseRecord, если хотите, и внедрить метод Load().

...