我正在使用带有代码的 WCF 服务,该代码是从 mex 端点生成的。
我希望能够序列化自动生成的类。
我的问题是,这些自动生成的类实现 System.ComponentModel.INotifyPropertyChanged 接口(interface),并且偶尔在序列化它们时,我会遇到以下异常:
Type 'System.ComponentModel.PropertyChangedEventManager' in
Assembly 'WindowsBase, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35' is not marked as serializable.
通常我会通过将 [NonSerialized]
添加到 PropertyChanged
事件来处理此异常,但这里的代码是自动生成的,我不想改变它。
解决这个问题的最佳方法是什么?
最佳答案
听起来您正在使用 BinaryFormatter
- 但是,WCF 类型旨在使用 DataContractSerializer
或相关序列化程序(NetDataContractSerializer
、protobuf)进行序列化-网络等)。尝试使用 DataContractSerializer
代替 - 您的问题应该会消失。
关于c# - 如何正确序列化自动生成的 WCF 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10375116/