NGWS SDK Documentation  

This is preliminary documentation and subject to change.
To comment on this topic, please send us email at ngwssdk@microsoft.com. Thanks!

Custom Formatters

As seen a few times before, the Formatters are the classes that actualy format the information in the SerializationInfo into something that can be written to a stream. The Runtime provides two such formatters, the BinaryFormatter, and the SOAPFormatter. Since formatters are pluggable, developers can build their own if need be. The basic picture is as follows:

The IFormatter interface must be implemented by a developer wishing to write their own formatter. The interface is simple and consists of two methods and three properties:

public interface IFormatter: 
{
   //Properties 
 SerializationBinder Binder { get; set; }
 StreamingContext Context { get; set; }
 ISurrogateSelector SurrogateSelector { get; set; }
   //Methods 
 object Deserialize(Stream serializationStream);
 void Serialize(Stream serializationStream, object graph);
}

By implementing the simple interface above, a custom formatter can be easily written. The PseudoMLFormatter (included in SDK) is a great example of a custom formatter.