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 read existing comments below or you can post a comment yourself on this article .

Consider making a donation
Please consider making a donation using PayPal. Your donation helps me to pay the bills so I can keep running Imar.Spaanjaars.Com, providing fresh content as often as possible.

Feedback by Other Visitors of Imar.Spaanjaars.Com

On Monday, February 23, 2009 11:46:55 PM panchoPantera said:
I think the msdn article deserves the credit for created the basis of what AzamSharp and you improve later.
I think all of you deserve a part of the credit.
I think your article on Validation is great! I never pay any attention to attributes but since I saw you articles about adding attributes to decorate the debug process and the validation framework I started to incorporate those ideas in my designs.
On Tuesday, February 24, 2009 7:39:16 AM Imar Spaanjaars said:
Hi panchoPantera,

Have you seen my new site: ? It's all about .NET attributes...


On Monday, March 9, 2009 8:20:28 PM krainov said:
Imar! Idea is the abstract sketch. Don't wory about idea credits so serious. The helicopter model was inspired from the dragonfly... what about the credits in this accurance? You have done a grate job, which is so useful for a lot of us. It is not important now... Thanx!
On Saturday, April 4, 2009 12:31:14 AM gur said:
I think azam is a copycat and is involved in plagairism
On Wednesday, April 8, 2009 4:10:54 PM Mohammad Azam said:

This is AzamSharp! I don't think I should get the credit for this article. I remember reading an article on which demonstrated this approach. I am not sure of the link of the codeproject article and maybe that is why I never included it in my article.

On Wednesday, April 8, 2009 5:00:47 PM Imar Spaanjaars said:
Hi AzamSharp,

Either way, thanks for posting your initial article.... ;--)



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 QuickDocId of the document.

For more information about the Talk Back feature, check out this news item.