Могу ли я получить подсказки по именованию сопоставления для AutoMapper ForMember as Dictionary‹string,string›?

Или есть другое решение... Вот мое объяснение: у меня есть типизированный объект с именем Customer (например) с множеством свойств, и я хотел бы сопоставить его с динамическим объектом Expando или IDictionary. Я имею в виду, что это было бы желаемым решением, но второй тип также может быть статическим типом. Но все же подробнее здесь:

объект src будет

Customer
  -> Name
  -> LastName
  -> DOB
  -> FirstPurchaseDate
  -> LastVisitHompage

какие еще 20 объектов недвижимости...

Теперь я хотел бы взять словарь, который определяет мои сопоставления имен свойств.

Name     = Line1TextField
LastName = Line17TextField
DOB      = Line3DateField
...

и так далее

теперь я хотел бы передать объект src (мой клиент) и получить объект Expando со свойствами в соответствии с моим словарем определений.

Сначала я подумал, что могу использовать метод ForMember в цикле foreach, но ForMember строго типизирован с лямбда-выражением. Таким образом, что-то вроде ForMember(IDictrionary) или ForMember(string, string) не существует, чтобы дать элементу, отображающему некоторые подсказки по именованию

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

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

Или мне просто нужно написать какой-то левый, правый код поверх моего картографического словаря? С какими-то размышлениями или выражениями?

Извините, что я не могу быть более точным в данный момент или иметь какой-либо код...

Спасибо за любую помощь или мнения?


person silverfighter    schedule 13.08.2013    source источник
comment
AutoMapper не может этого сделать — см. stackoverflow.com/a/7778398/43846 для возможного решения.   -  person stuartd    schedule 14.08.2013


Ответы (1)


После небольшого изучения и приятного разговора с Джимми Богардом, автором AutoMapper в Твиттере. Я понял, что основная цель и полезность AutoMapper заключается в сопоставлении объектов, если соглашение об именах целевого объекта и исходного объекта совпадает.

Или, по крайней мере, когда вы сможете определить соглашение. Поскольку в моем примере это не так, AutoMapper не так полезен для этого. В итоге я написал свой собственный проекционный код.

person silverfighter    schedule 20.08.2013