If you haven't looked into using attributes you really should. We've all used the serialization ones I'm sure but think about using your own, it's not that difficult, just a simple class with an attribute telling it that it itself is an attribute and where it can be used then a bit of code using reflection techniques to interogate them.
I'm using it as an ORM technique, describing the stored procs to get/save classes and also describing the property to field mappings. It's early days with my architecture but I'm liking it, for all those simple objects its going to do away with the whole persistence code that we all write over and over. I've seen lots of other ORM solutions but attributes is my personal choice of where I'm going, it keeps the description with the object rather than in some config file or other complicated solution. It also means you can carry your class to another project with ease, very little dependency involved as long as you have your ORM persistance class/assembly carried over as well.