As of version 3.5 SP1 (and still true for .NET 4.7.x), .NET comes along with the following serializers:
There isn't, however, a common interface for all of these serializers, and, in fact, they have quite different requirements.
The base classes or interfaces are:
The interfaces that can be used to control the serialization process are:
Also, there are a couple of attribute classes that can be used to control the serialization process:
Note that the Soap* attributes are only considered if the SoapBindingUse.Encoded is set for the Use property of the binding, in ASP.NET Web Services, otherwise, its the Xml* attributes.
It would be good to see a common interface (perhaps IFormatter, since it's the most common) for all of these serializers.