3

我想使用 NetDataContractSerializer(或我猜的任何序列化器)来控制在反序列化期间通常不可序列化的类型的对象创建。使用自定义 SerializationBinder 我可以控制构造的类型,并使用自定义 ISurrogateSelector 和 ISerializationSurrogate 来控制如何在对象上设置状态。

我不能做的实际上是自己创建对象以允许使用依赖注入或其他东西。导致问题的对象位于对象图中,因此我无法在序列化之前对其进行编辑。

有没有办法让我的代码构造反序列化对象?

(作为背景,我正在编写基于 WF 示例中的 XmlWorkflowInstanceStore 的自定义 WF4 持久性实例存储。我想编写具有接口变量的工作流......并且不能直接构造具体类型。XmlWorkflowInstanceStore 是唯一的我可以找到自定义持久性的示例,它使用 NetDataContractSerializer 来序列化工作流状态。)

4

2 回答 2

0

我知道这个问题很老,但你在找GetSafeUninitializedObject吗?

于 2015-04-09T17:30:01.673 回答
0

我一直遇到这个问题。我通常自己实现 ISerializable 并使用方法(例如命名为 SetDependencies)设置所有依赖项 - 这并不是您真正想要的方式(因为您必须在反序列化后调用它)但我还没有找到更好的方法(尝试了 AOP,但它变得讨厌)

于 2011-08-11T14:09:55.627 回答