如何正确序列化自动生成的 WCF 类型



我正在使用带有代码的 WCF 服务,该代码是从 mex 终结点生成的。

我希望能够序列化自动生成的类。

我的问题是,那些自动生成的类实现了System.ComponentModel.INotifyPropertyChanged接口,偶尔在序列化它们时,我会收到以下异常:

Type 'System.ComponentModel.PropertyChangedEventManager' in 
Assembly 'WindowsBase, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35' is not marked as serializable.

通常我会通过向 PropertyChanged 事件添加 [NonSerializable]来处理此异常,但这里的代码是自动生成的,我不想更改它。

处理此问题的最佳方法是什么?

听起来

你正在使用BinaryFormatter - 但是,WCF 类型用于使用 DataContractSerializer 或相关的序列化程序(NetDataContractSerializer、protobuf-net 等)进行序列化。尝试改用DataContractSerializer - 您的问题应该会消失。

最新更新