忽略使用 Automapper 映射事件
Ignore mapping an event with Automapper
我必须有两个相同的对象(A
,B
)。我想将所有 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
的值,您会看到 B
的 PropertyChanged
事件将触发。
我必须有两个相同的对象(A
,B
)。我想将所有 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
的值,您会看到 B
的 PropertyChanged
事件将触发。