2 // System.Runtime.Serialization.Formatter.cs
4 // Duncan Mak (duncan@ximian.com)
10 using System.Collections;
12 using System.Runtime.Serialization;
14 [CLSCompliant (false)]
16 public abstract class Formatter : IFormatter
18 protected Formatter ()
22 protected ObjectIDGenerator m_idGenerator;
23 protected Queue m_objectQueue;
25 public abstract SerializationBinder Binder {
30 public abstract StreamingContext Context {
35 public abstract ISurrogateSelector SurrogateSelector {
40 public abstract object Deserialize (Stream serializationStream);
43 protected virtual object GetNext (out long objID)
45 throw new NotImplementedException ();
49 protected virtual long Schedule (object obj)
51 throw new NotImplementedException ();
54 public abstract void Serialize (Stream serializationStream, object graph);
56 protected abstract void WriteArray (object obj, string name, Type memberType);
58 protected abstract void WriteBoolean (bool val, string name);
60 protected abstract void WriteByte (byte val, string name);
62 protected abstract void WriteChar (char val, string name);
64 protected abstract void WriteDateTime (DateTime val, string name);
66 protected abstract void WriteDecimal (Decimal val, string name);
68 protected abstract void WriteDouble (double val, string name);
70 protected abstract void WriteInt16 (short val, string name);
72 protected abstract void WriteInt32 (int val, string name);
74 protected abstract void WriteInt64 (long val, string name);
77 protected virtual void WriteMember (string memberName, object data)
81 protected abstract void WriteObjectRef (object obj, string name, Type memberType);
84 protected abstract void WriteSByte (sbyte val, string name);
87 protected abstract void WriteSingle (float val, string name);
89 protected abstract void WriteTimeSpan (TimeSpan val, string name);
91 protected abstract void WriteUInt16 (ushort val, string name);
93 protected abstract void WriteUInt32 (uint val, string name);
95 protected abstract void WriteInt64 (ulong val, string name);
97 protected abstract void WriteValueType (object obj, string name, Type memberType);