2 // System.Runtime.Serialization.Formatter.cs
4 // Duncan Mak (duncan@ximian.com)
10 using System.Collections;
13 namespace System.Runtime.Serialization
15 [CLSCompliant (false)]
17 public abstract class Formatter : IFormatter
19 protected Formatter ()
23 protected ObjectIDGenerator m_idGenerator;
24 protected Queue m_objectQueue;
26 public abstract SerializationBinder Binder {
31 public abstract StreamingContext Context {
36 public abstract ISurrogateSelector SurrogateSelector {
41 public abstract object Deserialize (Stream serializationStream);
44 protected virtual object GetNext (out long objID)
46 throw new NotImplementedException ();
50 protected virtual long Schedule (object obj)
52 throw new NotImplementedException ();
55 public abstract void Serialize (Stream serializationStream, object graph);
57 protected abstract void WriteArray (object obj, string name, Type memberType);
59 protected abstract void WriteBoolean (bool val, string name);
61 protected abstract void WriteByte (byte val, string name);
63 protected abstract void WriteChar (char val, string name);
65 protected abstract void WriteDateTime (DateTime val, string name);
67 protected abstract void WriteDecimal (Decimal val, string name);
69 protected abstract void WriteDouble (double val, string name);
71 protected abstract void WriteInt16 (short val, string name);
73 protected abstract void WriteInt32 (int val, string name);
75 protected abstract void WriteInt64 (long val, string name);
78 protected virtual void WriteMember (string memberName, object data)
80 throw new NotImplementedException ();
83 protected abstract void WriteObjectRef (object obj, string name, Type memberType);
86 [CLSCompliant (false)]
87 protected abstract void WriteSByte (sbyte val, string name);
90 protected abstract void WriteSingle (float val, string name);
92 protected abstract void WriteTimeSpan (TimeSpan val, string name);
94 [CLSCompliant (false)]
95 protected abstract void WriteUInt16 (ushort val, string name);
97 [CLSCompliant (false)]
98 protected abstract void WriteUInt32 (uint val, string name);
100 [CLSCompliant (false)]
101 protected abstract void WriteUInt64 (ulong val, string name);
103 protected abstract void WriteValueType (object obj, string name, Type memberType);