<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx</link><description>We're making great progress with the Validation Application Block in Enterprise Library 3.0, and one of the last remaining tasks is to make sure we include a compelling set of validators with the block. While it's very easy to build your own validator,</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1440486</link><pubDate>Wed, 10 Jan 2007 00:55:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1440486</guid><dc:creator>Kristian</dc:creator><description>&lt;p&gt;Is there just a standard ComparisionValidator where you can say like 'greater than -1'. &lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1440519</link><pubDate>Wed, 10 Jan 2007 01:10:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1440519</guid><dc:creator>tomholl</dc:creator><description>&lt;p&gt;Kristian - you can do this with the RangeValidator (by only specifying one boundary).&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1440795</link><pubDate>Wed, 10 Jan 2007 01:33:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1440795</guid><dc:creator>Austin Lamb</dc:creator><description>&lt;p&gt;In addition to the And Validator and the Or Validator, what about something in-between (I don't have a good name now) which can validate that at least X conditions in the set are met.&lt;/p&gt;
&lt;p&gt;So, if you have 5 validators, and you want to be sure at least 3 of 5 are met (perhaps this is &amp;quot;good enough&amp;quot; quality for data input).&lt;/p&gt;
&lt;p&gt;Between those three, and the &amp;quot;Negate&amp;quot; property you mentioned, it should be possibly to express fairly complex validation when needed.&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1441216</link><pubDate>Wed, 10 Jan 2007 02:09:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1441216</guid><dc:creator>John</dc:creator><description>&lt;p&gt;How about a support for contexts,&lt;/p&gt;
&lt;p&gt;i.e. I have a user class and this user can actually be multiple types of user (standard, power, ultimate).&lt;/p&gt;
&lt;p&gt;I'd like the ability to specify validate for a given context e.g. ValidationMananger.Validate(User, Context) [please not I have not used any part of the block and the example is simply that]. So a bit like composite validator but you don't need to know which rules will fire....just that given the current context the right ones will fire.&lt;/p&gt;
&lt;p&gt;I'm sure there are other ways you could get around it....but just a suggestion.&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1441484</link><pubDate>Wed, 10 Jan 2007 03:45:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1441484</guid><dc:creator>tomholl</dc:creator><description>&lt;p&gt;John - actually we already support this, through the concept of &amp;quot;rulesets&amp;quot; which are named collections of validators. The syntax is almost the same as what you specified: &lt;/p&gt;
&lt;p&gt;ValidationResults results = Validation.Validate(myUser, &amp;quot;Power&amp;quot;);&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1442157</link><pubDate>Wed, 10 Jan 2007 06:50:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1442157</guid><dc:creator>stephen patten</dc:creator><description>&lt;p&gt;To be robust it should match the feature set of Peter Blum's validation package for ASP.Net. Multi-condition, centralized message panel to name a few.&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1442627</link><pubDate>Wed, 10 Jan 2007 09:12:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1442627</guid><dc:creator>IDisposable</dc:creator><description>&lt;p&gt;What about a CompareValidator that can reference another Field/Property/Method/etc... not to compare to a literal, but (for example) to compare two password entries.&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1442975</link><pubDate>Wed, 10 Jan 2007 10:52:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1442975</guid><dc:creator>Veetij</dc:creator><description>&lt;p&gt;This is small thing, but you may consider this: DoesFileExist(filepath) and DoesFileNotExist.&lt;/p&gt;
&lt;p&gt;first check that the file path is not nothing and not empty then check the existence of the file (File.Exist).&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1443524</link><pubDate>Wed, 10 Jan 2007 14:16:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1443524</guid><dc:creator>Boris Drajer</dc:creator><description>&lt;p&gt;I agree with IDisposable... It would be nice to have an out-of-the-box validator that knows how to compare two properties, for cases like start/end date input, repeat password, etc.&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1446212</link><pubDate>Thu, 11 Jan 2007 01:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1446212</guid><dc:creator>Mike Bouck</dc:creator><description>&lt;p&gt;Two points:&lt;/p&gt;
&lt;p&gt;1) Unless I'm missing something the proposed architecture can't handle co-occurance constraints (e.g. &amp;quot;If Customer.OccupationType = 'Employed' Then Customer.Occupation.Address is required&amp;quot;).&lt;/p&gt;
&lt;p&gt;2) I'm not sure I want my validation logic in code in the first place. &amp;nbsp;It seems like the better place for this is in a rules engine which your entities can call out to validate themselves. &amp;nbsp;Validation rules change. &amp;nbsp;They change often enough that I'd rather re-publish a rules update then re-compiling/deploying code. &amp;nbsp;Finally, a rules engine has no problem with point 1) above.&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1446277</link><pubDate>Thu, 11 Jan 2007 01:52:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1446277</guid><dc:creator>Atilla Ozgur</dc:creator><description>&lt;p&gt;Quote&lt;/p&gt;
&lt;p&gt;To be robust it should match the feature set of Peter Blum's validation package for ASP.Net. &lt;/p&gt;
&lt;p&gt;end quote&lt;/p&gt;
&lt;p&gt;If not this, this validation should offer one-to-one mapping to asp.net validation controls. So that I can programmaticaly inject this validation controls counterpart asp.net control to my page easily. If I can do that, I will have best of both worlds. Defense in depth. My services will be validated also my client will have javascript support.&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1447226</link><pubDate>Thu, 11 Jan 2007 04:11:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1447226</guid><dc:creator>Ravi Vishnubhotla</dc:creator><description>&lt;p&gt;Tom,&lt;/p&gt;
&lt;p&gt;How about handling semi-mandatory data based on certain other input value conditions?&lt;/p&gt;
&lt;p&gt;-Ravi&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1448034</link><pubDate>Thu, 11 Jan 2007 06:05:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1448034</guid><dc:creator>Glenn Block</dc:creator><description>&lt;p&gt;What about Parameter validation. Often when you write methods you want to do simple checks to ensure that the values passed in are correct or in a certain range. It would be awesome to be able to drop for example a [NotNullValidator] a parameter to a method rather than having to manually code the checks. Another place this could be used is in a class constructor.&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1449978</link><pubDate>Thu, 11 Jan 2007 12:27:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1449978</guid><dc:creator>Simon</dc:creator><description>&lt;p&gt;I totally agree with Glenn's comment about Parameter Validation; that would be one of the biggest benefits in my mind. If you could write;&lt;/p&gt;
&lt;p&gt;public void GetSomething(&lt;/p&gt;
&lt;p&gt; &amp;nbsp; [NotNullValidator] string myName,&lt;/p&gt;
&lt;p&gt; &amp;nbsp; [RangeValidator&amp;lt;int&amp;gt;(1, 100) int myAge)&lt;/p&gt;
&lt;p&gt;... the boiler-plate code at the start of each method would be so much simpler, and code requirements and intentions would be more obvious from method definitions.&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1450171</link><pubDate>Thu, 11 Jan 2007 13:47:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1450171</guid><dc:creator>Jarle Nygård</dc:creator><description>&lt;p&gt;The Parameter Validation sounds like a great idea! But I'd want it for my methods, so I could write something like this:&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;[Validate:NotNullOrEmptyString(boo), NotNull(hoo)]&lt;/p&gt;
&lt;p&gt;public int Foo(string boo, FooBoo hoo) {&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1454393</link><pubDate>Fri, 12 Jan 2007 11:26:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1454393</guid><dc:creator>Glenn Block</dc:creator><description>&lt;p&gt;I was thinking the same thing a Jarle. The benefit would be to seperate out the common concerns for validating parameters as well as to remove redundant coding.&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1456917</link><pubDate>Fri, 12 Jan 2007 22:13:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1456917</guid><dc:creator>Steve</dc:creator><description>&lt;p&gt;I have a quick comment on the &amp;quot;composition&amp;quot; validators (to me I would call this a rule set - but you're already using that term)&lt;/p&gt;
&lt;p&gt;Rather than use &amp;quot;And Composite Validator&amp;quot; and &amp;quot;Or Composite Validator&amp;quot; &amp;nbsp;I would suggest using language and terms similar to the WaitHandle methods (which in my mind is conceptually the same thing)&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://msdn2.microsoft.com/en-us/library/system.threading.waithandle_methods.aspx"&gt;http://msdn2.microsoft.com/en-us/library/system.threading.waithandle_methods.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So the composite validators would be named&lt;/p&gt;
&lt;p&gt;&amp;quot;AndAny Composite Validator&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;AndAll Composite Validator&amp;quot;&lt;/p&gt;
&lt;p&gt;Clearly the negate functionality would still apply.&lt;/p&gt;
&lt;p&gt;If I can compose a composite validator with other child composite validators than I can have some really extensive branching logic checks.&lt;/p&gt;
&lt;p&gt;sweet.&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1457701</link><pubDate>Sat, 13 Jan 2007 03:22:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1457701</guid><dc:creator>Weex</dc:creator><description>&lt;p&gt;Side note: To help people provide good feedback you should have in the first place clearly defined a borderline between &amp;quot;simple&amp;quot; validation and &amp;quot;complex&amp;quot; rules engine. This would be ability of rules engines to perform not only checks but some actions? If this is it then you still need to provide means for complex branching logic as in examples above.&lt;/p&gt;
&lt;p&gt;Personally, i think method's parameters validation is a must.&lt;/p&gt;
&lt;p&gt;Also, it would be really great if VAB will contain some kind of connectors or adapters to ASP.NET validation framework. This will add a lot of value to your work. &lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1467486</link><pubDate>Mon, 15 Jan 2007 05:13:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1467486</guid><dc:creator>John</dc:creator><description>&lt;p&gt;Parameter validation is defiantly a must.&lt;/p&gt;
&lt;p&gt;I think this project performs some kind of parameter validation &lt;a rel="nofollow" target="_new" href="http://www.codeplex.com/ValidationFramework"&gt;http://www.codeplex.com/ValidationFramework&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Although it does not do the AND/OR style of composite validators.&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1486094</link><pubDate>Thu, 18 Jan 2007 04:34:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1486094</guid><dc:creator>tomholl</dc:creator><description>&lt;p&gt;Thanks for all the feedback. We're planning to add a &amp;quot;Member comparison validator&amp;quot; to address the scenario rasied a few times here, although it won't make it into this month's CTP. &lt;/p&gt;
&lt;p&gt;We're also going to ship integration adapters for Winforms and ASP.NET in the next CTP, and we'll add WCF support before we release.&lt;/p&gt;
&lt;p&gt;thanks&lt;/p&gt;
&lt;p&gt;Tom&lt;/p&gt;
</description></item><item><title>Validation Application Block in the January 2007 CTP</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1486201</link><pubDate>Thu, 18 Jan 2007 05:30:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1486201</guid><dc:creator>Tom Hollander's blog</dc:creator><description>&lt;p&gt;Our team is hard at work putting the finishing touches on the January 2007 CTP of Enterprise Library&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1514556</link><pubDate>Tue, 23 Jan 2007 17:54:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1514556</guid><dc:creator>Benson</dc:creator><description>&lt;p&gt;How about cross field validation?&lt;/p&gt;
&lt;p&gt;Things like validateCityInState(objCity, objState) will be a nice addition. Of course, both of them will be in the same class.&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1515869</link><pubDate>Tue, 23 Jan 2007 20:28:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1515869</guid><dc:creator>tomholl</dc:creator><description>&lt;p&gt;Benson - we've implemented a Property Comparison Validator (post Jan CTP) that lets you compare two properties on the same type using operators such as =,!=,&amp;lt;,&amp;gt;,&amp;lt;= and &amp;gt;=. It doesn't let you plug in custom algorithms or strategies like City In State suggestion, but it would be simple enough to build your own validator that followed a similar approach.&lt;/p&gt;
&lt;p&gt;Tom&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1536751</link><pubDate>Fri, 26 Jan 2007 16:42:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1536751</guid><dc:creator>PatrickRietveld</dc:creator><description>&lt;p&gt;I still miss a compare validator attribute which enables the validation of one property against the other. For Example I want my enddate to be greater than the startdate. for example.&lt;/p&gt;
&lt;p&gt;public DateTime StartDate&lt;/p&gt;
&lt;p&gt;{get;set;}&lt;/p&gt;
&lt;p&gt;[ComparePropertyValidator(&amp;quot;StartDate&amp;quot;,CompareOperator.GreaterThan)]&lt;/p&gt;
&lt;p&gt;public DateTime EndDate&lt;/p&gt;
&lt;p&gt;{get;set;]&lt;/p&gt;
&lt;p&gt;This would be possible if the Object To Validate is passed with the Attribute.Validate() method.&lt;/p&gt;
&lt;p&gt;Patrick&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1536891</link><pubDate>Fri, 26 Jan 2007 16:59:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1536891</guid><dc:creator>PatrickRietveld</dc:creator><description>&lt;p&gt;One thing that isn't clear to me is how you should add errormessages to an attribue. I hate placing hardcoded constant strings in the code. I would like to use a resource file for maintaining the errormessages (globalization). One way to do this is to add a configuration setting specifying the resource file to use for a specific ruleset. You could then use a naming convention for naming the keys in the resource file. for example&lt;/p&gt;
&lt;p&gt;Key:NotNullOrEmptyString_myclass_myProperty&lt;/p&gt;
&lt;p&gt;Value: the field 'MyField' is required.&lt;/p&gt;
&lt;p&gt;This way you don't need to supply the attribute itself with an errormessage.&lt;/p&gt;
&lt;p&gt;Patrick&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1537863</link><pubDate>Fri, 26 Jan 2007 22:44:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1537863</guid><dc:creator>tomholl</dc:creator><description>&lt;p&gt;Thanks Patrick. &lt;/p&gt;
&lt;p&gt;Re cross-property comparisons: as per my comment above, this has been implemented almost exactly as you described, however it was done after the January CTP release so you won't see it until the next drop.&lt;/p&gt;
&lt;p&gt;Re resources: We already support externalization of error messages, although not quite in the way you described. When defining validators through either attributes or configurations, you can specify either a hard-coded message template, or you can specify a resource name and resource assembly that contains the message. This should work in the January CTP.&lt;/p&gt;
&lt;p&gt;Tom&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1656040</link><pubDate>Mon, 12 Feb 2007 04:14:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1656040</guid><dc:creator>C Snider</dc:creator><description>&lt;p&gt;I did not notice any &amp;quot;Validate only if filled&amp;quot; Validators for optional items. &amp;nbsp;For example, in an ASP.NET application, we sometimes have optional parameters passed to a page. &amp;nbsp;It'd be nice to have a vaidator on these types that we can call all the time, but the validator only checks the values if the parameter is actually filled. &amp;nbsp;&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1662525</link><pubDate>Mon, 12 Feb 2007 19:41:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1662525</guid><dc:creator>tomholl</dc:creator><description>&lt;p&gt;You can accomplish this with the OrCompositeValidator and the [IgnoreNulls] attribute.&lt;/p&gt;
&lt;p&gt;Tom&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1674290</link><pubDate>Wed, 14 Feb 2007 10:16:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1674290</guid><dc:creator>John Rusk</dc:creator><description>&lt;p&gt;&amp;quot;To help people provide good feedback you should have in the first place clearly defined a borderline between 'simple' validation and 'complex' rules engine. This would be ability of rules engines to perform not only checks but some actions?&amp;quot;&lt;/p&gt;
&lt;p&gt;Personally, I prefer something like this, which can do both 'simple' validation and 'complex' rules with actions: &lt;a rel="nofollow" target="_new" href="http://www.activesharp.com"&gt;http://www.activesharp.com&lt;/a&gt; . The approach also lends itself very well to cross-field validation.&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1727101</link><pubDate>Tue, 20 Feb 2007 18:36:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1727101</guid><dc:creator>Wesley W</dc:creator><description>&lt;p&gt;What if you want to use the date validator and the Date must be greater then Today? So not a specific date.&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1727616</link><pubDate>Tue, 20 Feb 2007 19:32:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1727616</guid><dc:creator>tomholl</dc:creator><description>&lt;p&gt;Wesley - that's what the Relative DateTime Validator is for.&lt;/p&gt;
&lt;p&gt;Tom&lt;/p&gt;
</description></item><item><title>re: Validating multiple objects in one pass</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1736118</link><pubDate>Wed, 21 Feb 2007 20:17:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1736118</guid><dc:creator>Hitch</dc:creator><description>&lt;p&gt;Is there an easy way to validate multiple objects of different class type in one pass, and return all of the error messages in one go? i.e. in an architecture where the web layer communicates with the business layer via a webservice, I'd like to limit the number of calls to the back end. Also, Without using reflection, it is not too straightforward to &amp;nbsp;call validate on multiple objects, collate all of the validationResults and an overall IsValid result, and return a final value. Also, given that a lot of reflection is probably used in the implementation of this, how well does the VAB perform with a large number of users and a large number of complex validations?&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1736278</link><pubDate>Wed, 21 Feb 2007 20:55:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1736278</guid><dc:creator>tomholl</dc:creator><description>&lt;p&gt;Hi Hitch -&lt;/p&gt;
&lt;p&gt;The ObjectValidator lets you specify that the block should follow references from one type to another and combine all of the validation results. So if you have several different objects you want to validate together, the easiest approach would be to build a new class that is an umbrella for all of the other objects and use the ObjectValidator to wire them all together.&lt;/p&gt;
&lt;p&gt;Re performance - yes we do use reflection at construction time but we've optimized things where possible. Hopefully the performance is acceptable for the functionality provided in most real world situations.&lt;/p&gt;
&lt;p&gt;Tom&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1848147</link><pubDate>Sat, 10 Mar 2007 01:47:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1848147</guid><dc:creator>Tyler</dc:creator><description>&lt;p&gt;When creating validators in code how do you tell it what property to validate? &amp;nbsp;Can you give me a simple example using VB?&lt;/p&gt;
</description></item><item><title>re: Validators supplied in the VAB</title><link>http://blogs.msdn.com/tomholl/archive/2007/01/09/validators-supplied-in-the-vab.aspx#1848209</link><pubDate>Sat, 10 Mar 2007 01:57:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1848209</guid><dc:creator>tomholl</dc:creator><description>&lt;p&gt;Hi Tyler -&lt;/p&gt;
&lt;p&gt;While you could go and set up a big graph of validators involving the PropertyValueAccessValidator (which is what happens under the covers when validators are built from attributes or configuration) I wouldn't recommend this approach if you want to do it all from code. Instead you can just call the validator and pass it the value of the property, eg:&lt;/p&gt;
&lt;p&gt;Dim v As New StringLengthValidator(5, 10)&lt;/p&gt;
&lt;p&gt;Dim results As ValidationResults = v.Validate(myCustomer.FirstName)&lt;/p&gt;
</description></item></channel></rss>