【问题标题】:How to properly serialize auto generated WCF types如何正确序列化自动生成的 WCF 类型
【发布时间】:2012-05-09 15:31:39
【问题描述】:

我正在使用带有代码的 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.

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

解决这个问题的最佳方法是什么?

【问题讨论】:

  • 你在这里使用哪个序列化程序?

标签: c# wcf events serialization reflection


【解决方案1】:

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

【讨论】:

  • @Arsen if "it" = DataContractSerializer - 有点,但不是很好。实际上,[Serializable] 并没有什么“常规”——BF 只是其中之一——它不是特殊/默认情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
  • 2011-05-07
  • 1970-01-01
相关资源
最近更新 更多