Сопоставить динамический объект с ValueInjecter - PullRequest
2 голосов
/ 14 октября 2011

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

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

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

Куда я иду не так? Примечание: на самом деле я могу магически разыграть (duck typing?) (LocationStatus) dbObject, но я хотел бы знать, как сопоставить с ValueInjecter. Спасибо.

1 Ответ

0 голосов
/ 14 мая 2015

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

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

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

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

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

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

Все отлично работает.

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

...