2009-03-26 11 views
5

У меня есть код что-то вроде этого:Как установить StreamingContext для 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); 

и мне нужно, чтобы обеспечить StreamingContext структуру. Я нашел several references, что это можно сделать для NetDataContractSerializer, но не для DataContractSerializer.

  • Есть ли способ сделать эту работу?
  • Я просто делаю это неправильно?

ответ

0

Использование IDataContractSurrogate позволяет выполнять пользовательскую сериализацию и десеризацию JSON для каждого типа или для каждого объекта.

См. IDataContractSurrogate Methods для документов API и см. DataContract Surrogate для образца.

Кроме того, чтобы прочитать и интерпретировать JSON, вы должны начать с JsonReaderWriterFactory, а не с фабрики XML. См. JsonReaderWriterFactory Class, чтобы понять, что я имею в виду.

Надеюсь, это поможет!