Commenting on my previous post, Udi Dahan brought this talk of his to my attention: http://www.infoq.com/presentations/Making-Roles-Explicit-Udi-Dahan
While I do feel that some of the points I made with regards to persistence are still valid, I did find Udi’s presentation extremely interesting. The example of IValidate<Customer> just feels right. If you have an interest in software architecture, I am sure you will find this interesting.