Сопоставление с пользовательским типом, который имеет внутренний конструктор - PullRequest
5 голосов
/ 13 марта 2012

Мы пытаемся сопоставить объект - исходящий контакт электронной почты Tridion - который имеет свойство типа пользовательского словаря с внутренним конструктором - ExtendedDetailCollection

Это точное отображение объекта на Viewmodel

Mapper.CreateMap<Contact,ContactViewModel>()
    .ForMember(x=>x.Name, m=>m.MapFrom(x=>x.ExtendedDetails["Name"].StringValue))

но другой способ не работает

Мы попробовали:

Mapper.CreateMap<ContactViewModel,Contact>()
    .ForMember(x=>x.ExtendedDetails["Name"].Value, m => m.MapFrom(x=>x.Name));

но это вызывает исключение во время выполнения.

Редактировать: Сообщение об исключении:

AutoMapper.AutoMapperConfigurationException: пользовательская конфигурация для члены поддерживаются только для отдельных членов верхнего уровня в типе.

Мы также пробовали различные преобразователи типов и преобразователи значений, но ни один из них не позволяет нам получить доступ к отображаемому объекту, к которому мы должны получить доступ для сопоставления объекта ExtendedDetails.

Mapper.CreateMap<ContactViewModel,Contact>()
    .ForMember(x=>x.ExtendedDetails, m => ????);

Есть шаблон для этого или проще использовать статический метод?

1 Ответ

1 голос
/ 14 марта 2012

Если ExtendedDetails - это класс, вам нужно создатьMap для этого класса, а затем отдельное свойство, такое как Имя класса.

...