This is the abstract base class for all
runtime
serialization formatters. It implements the
IFormatter interface, which provides the
properties that select the binder, surrogates, and streaming context
of the formatter. This interface also implements the
Serialize( ) and Deserialize( )
methods.
Additionally, the Formatter manages the queue of
objects to serialize and provides a set of Write*
methods for writing types to the stream.
public abstract class Formatter : IFormatter {
// Protected Constructors
protected Formatter( );
// Protected Instance Fields
protected ObjectIDGenerator m_idGenerator;
protected Queue m_objectQueue;
// Public Instance Properties
public abstract SerializationBinder Binder{set; get; }
//implements IFormatter
public abstract StreamingContext Context{set; get; }
// implements IFormatter
public abstract ISurrogateSelector SurrogateSelector{set; get; }
// implements IFormatter
// Public Instance Methods
public abstract object Deserialize(System.IO.Stream serializationStream)
// implements IFormatter
public abstract void Serialize(System.IO.Stream serializationStream, object graph)
// implements IFormatter
// Protected Instance Methods
protected virtual object GetNext(out long objID);
protected virtual long Schedule(object obj);
protected abstract void WriteArray(object obj, string name, Type memberType);
protected abstract void WriteBoolean(bool val, string name);
protected abstract void WriteByte(byte val, string name);
protected abstract void WriteChar(char val, string name);
protected abstract void WriteDateTime(DateTime val, string name);
protected abstract void WriteDecimal(decimal val, string name);
protected abstract void WriteDouble(double val, string name);
protected abstract void WriteInt16(short val, string name);
protected abstract void WriteInt32(int val, string name);
protected abstract void WriteInt64(long val, string name);
protected virtual void WriteMember(string memberName, object data);
protected abstract void WriteObjectRef(object obj, string name, Type memberType);
protected abstract void WriteSByte(sbyte val, string name);
protected abstract void WriteSingle(float val, string name);
protected abstract void WriteTimeSpan(TimeSpan val, string name);
protected abstract void WriteUInt16(ushort val, string name);
protected abstract void WriteUInt32(uint val, string name);
protected abstract void WriteUInt64(ulong val, string name);
protected abstract void WriteValueType(object obj, string name, Type memberType);
}