Serializable Extra Types for .NET 4[^]
Does what you are looking for using attributes.
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)