So who gets the credits for the idea of the Validation framework?

In my article series on N-Layer design I credited AzamSharp for his article on creating a domain object validation framework. AzamSharp didn't cite any other resources so it looks as all the ideas presented in the article are his.

However, I recently found this (ancient, in Internet terms) article on MSDN about Using Custom Attributes for Validation. It was written by Jan Tielens for the MSDN site using .NET 1.1 and Visual Studio 2003 and was article of the day in October 2003 on

So, should the real credits go to Jan instead of to AzamSharp? The similarities are too great to be ignored. Jan introduces the ValidatorAttribute base class, AzamSharp has a ValidationAttribute class. Both have an implemented Message property and an abstract IsValid method. Jan has a (non-generic) class responsible for validation called ValidationEngine and so has AzamSharp. However, he uses a generic version of the class which makes it a lot easier to reuse them, something Jan couldn't do because generics weren't available in .NET in 2003. Also, AzamSharp uses a collection of BrokenRule instances rather than a ValidationExceptionDetail. As you can see in my article series, I am using the concept of BrokenRule as well as I find it much more intuitive to work with than a collection of Exception instances. But, that's just a matter of choice.

So who gets the credits? Who wrote what or invented what wheel? Is it possible that two people came up with the same idea using almost the same names for things 5 years apart? Is that because the business domain language just points you in the right direction? (What other names for a validation attribute base class can you come up with? ;-) )

My guess is that AzamSharp read Jan's article some time ago and then wrote his own - more generic and practically applicable - version later. But, that's just a guess. If you know the true story, make yourself heard using the Talk Back feature at the end of this article.


Where to Next?

Wonder where to go next? You can post a comment on this article.

Doc ID 488
Full URL
Short cut
Written by Imar Spaanjaars
Date Posted 02/22/2009 20:11


Talk Back! Comment on Imar.Spaanjaars.Com

I am interested in what you have to say about this article. Feel free to post any comments, remarks or questions you may have about this article. The Talk Back feature is not meant for technical questions that are not directly related to this article. So, a post like "Hey, can you tell me how I can upload files to a MySQL database in PHP?" is likely to be removed. Also spam and unrealistic job offers will be deleted immediately.

When you post a comment, you have to provide your name and the comment. Your e-mail address is optional and you only need to provide it if you want me to contact you. It will not be displayed along with your comment. I got sick and tired of the comment spam I was receiving, so I have protected this page with a simple calculation exercise. This means that if you want to leave a comment, you'll need to complete the calculation before you hit the Post Comment button.

If you want to object to a comment made by another visitor, be sure to contact me and I'll look into it ASAP. Don't forget to mention the page link, or the Doc ID of the document.

(Plain text only; no HTML or code that looks like HTML or XML. In other words, don't use < and >. Also no links allowed.