在反序列化期间控制对象创建

时间:2010-09-01 17:10:57

标签: c# .net serialization datacontractserializer netdatacontractserializer

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我知道这个问题已经过时了,但您在寻找GetSafeUninitializedObject吗?