4 // Dick Porter (dick@ximian.com)
6 // (C) 2002 Ximian, Inc. http://www.ximian.com
8 using System.Runtime.Serialization.Formatters;
9 using System.Runtime.Serialization;
11 using System.Runtime.Remoting.Messaging;
13 namespace System.Runtime.Serialization.Formatters.Binary {
14 public sealed class BinaryFormatter : IRemotingFormatter, IFormatter
16 private FormatterAssemblyStyle assembly_format;
17 private SerializationBinder binder;
18 private StreamingContext context;
19 private ISurrogateSelector surrogate_selector;
20 private FormatterTypeStyle type_format;
22 public BinaryFormatter()
24 surrogate_selector=null;
25 context=new StreamingContext(StreamingContextStates.All);
28 public BinaryFormatter(ISurrogateSelector selector, StreamingContext context)
30 surrogate_selector=selector;
34 public FormatterAssemblyStyle AssemblyFormat
37 return(assembly_format);
40 assembly_format=value;
44 public SerializationBinder Binder
54 public StreamingContext Context
64 public ISurrogateSelector SurrogateSelector
67 return(surrogate_selector);
70 surrogate_selector=value;
74 public FormatterTypeStyle TypeFormat
85 public object Deserialize(Stream serializationStream)
87 if(serializationStream==null) {
88 throw new ArgumentNullException("serializationStream is null");
90 if(serializationStream.CanSeek &&
91 serializationStream.Length==0) {
92 throw new SerializationException("serializationStream supports seeking, but its length is 0");
99 public object Deserialize(Stream serializationStream, HeaderHandler handler)
101 if(serializationStream==null) {
102 throw new ArgumentNullException("serializationStream is null");
104 if(serializationStream.CanSeek &&
105 serializationStream.Length==0) {
106 throw new SerializationException("serializationStream supports seeking, but its length is 0");
113 public object DeserializeMethodResponse(Stream serializationStream, HeaderHandler handler, IMethodCallMessage methodCallmessage)
115 if(serializationStream==null) {
116 throw new ArgumentNullException("serializationStream is null");
118 if(serializationStream.CanSeek &&
119 serializationStream.Length==0) {
120 throw new SerializationException("serializationStream supports seeking, but its length is 0");
127 public void Serialize(Stream serializationStream, object graph)
129 if(serializationStream==null) {
130 throw new ArgumentNullException("serializationStream is null");
135 public void Serialize(Stream serializationStream, object graph, Header[] headers)
137 if(serializationStream==null) {
138 throw new ArgumentNullException("serializationStream is null");