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

3
我希望能够控制一个通常不可序列化的类型的对象创建过程,使用NetDataContractSerializer(或任何其他序列化器)。我可以通过使用自定义SerializationBinder来控制构造的类型,并使用自定义ISurrogateSelector和ISerializationSurrogate来控制如何设置对象的状态。
但是,我无法实际创建对象以允许使用依赖注入等功能。引起问题的对象在对象图中,因此我无法在序列化之前编辑它。 是否有一种方法允许我的代码构造反序列化的对象? (背景:我正在编写基于WF示例中的XmlWorkflowInstanceStore的自定义WF4持久性实例存储。我想编写具有接口变量的工作流...而不能直接构造具体类型。XmlWorkflowInstanceStore是我能找到的唯一的自定义持久性示例,它使用NetDataContractSerializer来序列化工作流状态。)
2个回答

0

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


0
我经常遇到这个问题。通常我会自己实现ISerializable并使用一个方法(例如命名为SetDependencies)设置所有依赖项 - 这不是你可能想要的方式(因为你必须在反序列化后调用它),但我还没有找到更好的方法(尝试过AOP,但它变得很麻烦)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接