忽略使用 Automapper 映射事件

Ignore mapping an event with Automapper

我必须有两个相同的对象(AB)。我想将所有 A 属性映射到 B 属性,但我想在映射时忽略 PropertyChanged 事件。

PropertyChanged的签名是:

public event PropertyChangedEventHandler PropertyChanged;

我的 B 对象在映射之前在 PropertyChanged 中有一些值,但以下代码导致: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 映射事件处理程序 属性???

您使用了错误的映射语句。

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

创建一个新的B对象。之前的对象不见​​了。显然新的 B 没有事件处理程序。

你应该使用

Mapper.Map(A, B);

现在 existing B 接收 A 的值,您会看到 BPropertyChanged事件将触发。