Сопоставьте динамический объект с ValueInjecter

Я извлекаю данные с помощью Simple.Data, который сопоставляет таблицу базы данных с динамическим объектом. Я хочу сопоставить динамический объект с простым типом. Я пробовал это:

var dbObject = Database.Default.LocationStatus.FindByLocationStatusId(locationStatusId);
ILocationStatus domainObject = new LocationStatus();
domainObject.InjectFrom((object)dbObject);

Но никакие свойства в domainObject не установлены. Сопоставление должно быть простым, поскольку имена свойств одинаковы, например: dbObject.Name и domainObject.Name.

Где я ошибаюсь? Примечание. На самом деле я могу волшебным образом привести (утиный ввод?) (LocationStatus) dbObject, но я хотел бы знать, как отображать с помощью ValueInjecter. Спасибо.


person Neil Thompson    schedule 14.10.2011    source источник
comment
это должно работать, если свойства имеют одинаковое имя и тип, посмотрите здесь: valueinjecter.codeplex.com/discussions/ 240346   -  person Omu    schedule 15.10.2011
comment
Да, вот где я получил исходный код. Я должен что-то упустить. Спасибо за помощь, Чак.   -  person Neil Thompson    schedule 18.11.2011


Ответы (1)


Как бы странно это ни звучало, я столкнулся с этой же проблемой несколько дней назад, и решения были простыми.

Вам также нужно преобразовать вывод вашей динамики в тип, который вы пытаетесь сопоставить.

В моем случае:

WeatherData myData = new WeatherData().InjectFrom((object)weatherData);

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

WeatherData myData = new WeatherData().InjectFrom((object)weatherData) as WeatherData;

Все работает нормально.

Таким образом, кажется, что даже с более новыми версиями, 3+ года спустя, это все еще может быть проблемой, и приведение типа вывода является исправлением.

person shawty    schedule 14.05.2015