1 // created on 07/04/2003 at 17:16
\r
3 // System.Runtime.Serialization.Formatters.Soap.SoapFormatter
\r
6 // Jean-Marc Andre (jean-marc.andre@polymtl.ca)
\r
11 using System.Runtime.Serialization;
\r
12 using System.Runtime.Remoting.Messaging;
\r
13 using System.Xml.Serialization;
\r
16 namespace System.Runtime.Serialization.Formatters.Soap {
\r
17 public class SoapFormatterT: IRemotingFormatter, IFormatter {
\r
18 private ObjectWriter _objWriter;
\r
19 private SoapWriter _soapWriter;
\r
20 private SerializationBinder _binder;
\r
21 private StreamingContext _context;
\r
22 private ISurrogateSelector _selector;
\r
24 public SoapFormatterT() {
\r
27 public SoapFormatterT(ISurrogateSelector selector, StreamingContext context):this() {
\r
28 _selector = selector;
\r
35 public object Deserialize(Stream serializationStream) {
\r
36 return Deserialize(serializationStream, null);
\r
39 public object Deserialize(Stream serializationStream, HeaderHandler handler) {
\r
40 SoapParser parser = new SoapParser(serializationStream);
\r
41 SoapReader soapReader = new SoapReader(parser);
\r
42 ObjectReader reader = new ObjectReader(_selector, _context, soapReader);
\r
44 return reader.TopObject;
\r
48 public void Serialize(Stream serializationStream, object graph) {
\r
49 Serialize(serializationStream, graph, null);
\r
52 public void Serialize(Stream serializationStream, object graph, Header[] headers) {
\r
53 if(serializationStream == null)
\r
54 throw new ArgumentNullException("serializationStream");
\r
55 if(!serializationStream.CanWrite)
\r
56 throw new SerializationException("Can't write in the serialization stream");
\r
57 _soapWriter = new SoapWriter(serializationStream);
\r
58 _objWriter = new ObjectWriter((ISoapWriter) _soapWriter, _selector, new StreamingContext(StreamingContextStates.File));
\r
59 _soapWriter.Writer = _objWriter;
\r
60 _objWriter.Serialize(graph);
\r
64 public ISurrogateSelector SurrogateSelector {
\r
74 public SerializationBinder Binder {
\r
83 public StreamingContext Context {
\r