如何为DataContractSerializer设置StreamingContext?

BCS*_*BCS 5 .net datacontractserializer

我有一些像这样的代码:

[DataContract]
class Foo {
    [OnSerializing]
    private void BeforeSerialize(StreamingContext ctx)
    {
        ((MtType)ctx.Context).DoStuff()
    }

    ...
}

var reader = new XmlTextReader(filename);
var serializer = new DataContractSerializer(typeof(Type));
Type type = (Type)serializer.ReadObject(reader);
Run Code Online (Sandbox Code Playgroud)

我需要提供StreamingContext结构.我找到了几个引用,这可以做到NetDataContractSerializer但没有DataContractSerializer.

  • 有没有办法让这项工作?
  • 我这样做错了吗?

kri*_*SFT 0

使用 IDataContractSurrogate 可以让您在每个类型或每个对象的基础上进行自定义 JSON 序列化和反序列化。

请参阅API 文档的IDataContractSurrogate 方法并参阅DataContract Surrogate,并参阅示例的

另外,要读取和解释 JSON,您可以从 JsonReaderWriterFactory 开始,而不是 XML 工厂。请参阅JsonReaderWriterFactory 类以了解我的意思。

希望这可以帮助!