#mapping #valueinjecter
#сопоставление #valueinjecter
Вопрос:
Я извлекаю данные с помощью Simple.Данные — сопоставление таблицы базы данных с динамическим объектом. Я хочу сопоставить динамический объект с простым типом. Я пробовал это:
var dbObject = Database.Default.LocationStatus.FindByLocationStatusId(locationStatusId);
ILocationStatus domainObject = new LocationStatus();
domainObject.InjectFrom((object)dbObject);
Но никакие свойства в DomainObject не заданы.
Сопоставление должно быть простым, поскольку имена свойств совпадают, например: DBObject .Имя и domainObject.Name
Где я ошибаюсь? Примечание: на самом деле я могу волшебным образом использовать (утиный ввод?) (LocationStatus)DBObject но я хотел бы знать, как сопоставить с помощью ValueInjecter. Спасибо.
Комментарии:
1. это должно работать, если свойства имеют одинаковое имя и тип, посмотрите здесь: valueinjecter.codeplex.com/discussions/240346
2. Да, вот откуда я получил исходный код. Должно быть, я что-то упускаю. Спасибо за вашу помощь, Чак.
Ответ №1:
Как ни странно, я столкнулся с этой же проблемой несколько дней назад, и решение было простым.
Вам также необходимо привести выходные данные вашей динамики к типу, который вы пытаетесь сопоставить.
В моем случае:
WeatherData myData = new WeatherData().InjectFrom((object)weatherData);
как показано в сообщении, на которое ссылается в комментариях выше, не сработало (я подозреваю, что с той же проблемой, что и исходный плакат), но при приведении с использованием as …
WeatherData myData = new WeatherData().InjectFrom((object)weatherData) as WeatherData;
Все работает нормально.
Таким образом, кажется, что даже с более новыми версиями, спустя более 3 лет это все еще может быть проблемой, и приведение типа вывода является исправлением.