2014-02-20 5 views
0

Мне нужно сопоставить исходный класс с базовым классом назначения с помощью auto-mapper.Сопоставление с базовым классом с использованием automapper

Мой сценарий выглядит следующим образом.

class Source 
{ 
    string FirstID { get; set; } 
    string SecondID { get; set; } 
} 

Кроме того, мой адресат, как показано ниже

class DestinationBase 
{ 
    string ID { get; set; } 
} 

class DestinationObject : DestinationBase 
{ 
    string Prop { get; set; } 
} 

Когда я использую automapper с

Mapper.CreateMap<Source, DestinationObject>() 
     .ForMember(d => d.ID, s => s.MapFrom(s.FirstID)) 
     .ForMember(d => d.ID, s => s.MapFrom(s.SecondID)) 

Один из идентификатора после отображения не работает. Пожалуйста, поймите, почему? Я попытался включить, но я думаю, я не понимаю его использования достаточно хорошо.

+0

Это фактический код, который у вас есть в вашем проекте? Карта предназначена для «Destination», но вы показали «DestinationObject» и «DestinationBase». Также 'Карта' является верхним регистром и принимает аргументы; и я не думаю, что есть метод под названием «ForMembers». –

+0

Это не код в моей кодовой базе, а сценарий, с которым я работаю. Сейчас я отредактирую его. Спасибо – damola

ответ

0

Вы указываете поле идентификатора в целевом объекте дважды, чтобы идентификатор был значением из s.SecondId.
Что вы пытаетесь выполнить с помощью FirstID и SecondId в целевом объекте?

+0

Спасибо за возврат исходного объекта - это плоская структура, в то время как объект назначения больше oop. Базовый класс используется как средство индивидуального типа данных идентификации, а id - это содержимое. Я пытаюсь получить объект unquie foreach id в терминах nom.automapper. – damola

+0

Я не знаю способа сопоставления из одного источника в несколько пунктов назначения. (Возможно, это возможно, но я не мог понять, как или найти примеры). Это может быть проще свернуть самостоятельно, если это одноразовая ситуация, и исходный объект имеет только несколько идентификаторов, которые вам нужно сопоставить. – fbranicky

Смежные вопросы