In the custom code I created, I disregarded most of the base
class constructors, which pass in a message template that overrides the
default, a tag, or a negated property determining whether it is looking at the
opposite results. I disregarded it because it I had no need for it in this
example, but if I was building my own custom validation for a framework or
library, I would have included additional constructor overloads to incorporate
this information.