2015-02-15 3 views
0

У меня есть два одинаковых объекта (A, B). Я хочу отобразить все свойства A для B свойств, но я хочу игнорировать PropertyChanged событие при сопоставлении.Игнорировать отображение события с помощью Automapper

Подпись PropertyChanged является:

public event PropertyChangedEventHandler PropertyChanged; 

Мой B объект имеет несколько значений в PropertyChanged BEFOR отображения, но следующий код причины: B.PropertyChanged == Null:

B = Mapper.Map<myClass, myClass>(A); 

Я попытался это одно:

Mapper.CreateMap<myClass, myClass>().ForMember(x => x.PropertyChanged, opt => opt.Ignore()) 

Но я получаю является ошибкой:

... PropertyChanged can only appear on the left hand side of += or -= ...

Как я могу игнорировать сопоставление свойства обработчика событий с Automapper ???

+0

Возможный дубликат [AutoMapper: вручную установленное свойство] (http://stackoverflow.com/questions/15277904/automapper-manually-set-property) – shahkalpesh

+0

Нет, я хочу предотвратить сопоставление событий, но ваш вопрос о вопросе о предотвращении OnPropertyChanged внутри исходного объекта. – RAM

+0

@shahkalpesh, мой вопрос другой! – RAM

ответ

0

Вы используете неправильный оператор отображения.

B = Mapper.Map<myClass, myClass>(A); 

создает новый B объект. Предыдущий объект исчез. Очевидно, что новый B не имеет обработчика событий.

Вместо этого вы должны использовать

Mapper.Map(A, B); 

Теперь существующийB получает A «s значения, и вы увидите, что B» s PropertyChanged событие (s) будет срабатывать.