One of the things that the DataContractSerializer does is create a mapping between CLR type names and XML qnames.
Lots of people know that you can control this mapping on a per-type basis via the [DataContract] attribute, e.g.
namespace Contoso.Serialization{ [DataContract( Namespace="http://schemas.contoso.com/2008" )] public class Person {
[DataMember] public string Name { get; set; } }}
Having to explicitly specify this on every type gets a little laborious, especially if you just want to say "put all types in this CLR namespace into this XML namespace".
Few people know that there's a simple way to do this via the assembly-level ContractNamespaceAttribute:
[assembly: ContractNamespace( "http://schemas.contoso.com/2008", ClrNamespace="Contoso.Serialization" )]
If you have that, then you can just say [DataContract] (sans Namespace="...") and it's just as if you had said [DataContract( Namespace="http://schemas.contoso.com/2008" )] for all [DataContract] types in the Contoso.Serialization namespace.
That comes in handy from time to time and can save some keystrokes.
This has been around since .NET 3.0, but I didn't know about it until recently. Figured not many other people did either :)