<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>CuttingEdge.Conditions</title><link>http://conditions.codeplex.com/project/feeds/rss</link><description>CuttingEdge.Conditions is a library that helps developers to write pre- and postcondition validations in their C&amp;#35; 3.0 and VB.NET 9.0 code base. Writing these validations is easy and it improves the readability and maintainability of code.</description><item><title>Source code checked in, #94877</title><link>http://conditions.codeplex.com/SourceControl/changeset/changes/94877</link><description>Upgrade&amp;#58; New Version of LabDefaultTemplate.xaml. To upgrade your build definitions, please visit the following link&amp;#58; http&amp;#58;&amp;#47;&amp;#47;go.microsoft.com&amp;#47;fwlink&amp;#47;&amp;#63;LinkId&amp;#61;254563</description><author>Project Collection Service Accounts</author><pubDate>Mon, 01 Oct 2012 22:38:35 GMT</pubDate><guid isPermaLink="false">Source code checked in, #94877 20121001103835P</guid></item><item><title>Source code checked in, #94876</title><link>http://conditions.codeplex.com/SourceControl/changeset/changes/94876</link><description>Checked in by server upgrade</description><author>Project Collection Service Accounts</author><pubDate>Mon, 01 Oct 2012 22:31:06 GMT</pubDate><guid isPermaLink="false">Source code checked in, #94876 20121001103106P</guid></item><item><title>Source code checked in, #94109</title><link>http://conditions.codeplex.com/SourceControl/changeset/changes/94109</link><description>Projects upgraded from Visual Studio 2008 to 2010.</description><author>dot_NET_Junkie</author><pubDate>Tue, 28 Aug 2012 14:01:17 GMT</pubDate><guid isPermaLink="false">Source code checked in, #94109 20120828020117P</guid></item><item><title>Reviewed: CuttingEdge.Conditions v1.2 (aug 10, 2012)</title><link>http://conditions.codeplex.com/releases/view/68355#ReviewBy-maartenmensink</link><description>Rated 5 Stars &amp;#40;out of 5&amp;#41; - This library is so easy to use it almost a crime not using it.</description><author>maartenmensink</author><pubDate>Fri, 10 Aug 2012 11:05:54 GMT</pubDate><guid isPermaLink="false">Reviewed: CuttingEdge.Conditions v1.2 (aug 10, 2012) 20120810110554A</guid></item><item><title>Commented Issue: Include Condition.Requires overloads with Func&lt;&gt; to get parameter name [17905]</title><link>http://conditions.codeplex.com/workitem/17905</link><description>Your library is far superior to netfx.Guard apart from just one feature&amp;#33;&lt;br /&gt;&lt;br /&gt;Condition.Requires&amp;#40;&amp;#41; that you manually type the name for the parameter being checked.&lt;br /&gt;netfx.Guard uses this syntax&amp;#58;&lt;br /&gt;&lt;br /&gt;Guard.IsNotNull&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; paramName&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;The parameter name is extracted automatically by visiting the expression tree.&lt;br /&gt;Should be easy to implement&amp;#33;&lt;br /&gt;Comments: ** Comment from web user: dot_NET_Junkie ** &lt;p&gt;Such feature is indeed easy to implement, but I descided not to add such feature. You can read more about this here&amp;#58;&lt;br /&gt;http&amp;#58;&amp;#47;&amp;#47;conditions.codeplex.com&amp;#47;discussions&amp;#47;278811&lt;/p&gt;</description><author>dot_NET_Junkie</author><pubDate>Mon, 23 Apr 2012 07:53:26 GMT</pubDate><guid isPermaLink="false">Commented Issue: Include Condition.Requires overloads with Func&lt;&gt; to get parameter name [17905] 20120423075326A</guid></item><item><title>Commented Issue: Include Condition.Requires overloads with Func&lt;&gt; to get parameter name [17905]</title><link>http://conditions.codeplex.com/workitem/17905</link><description>Your library is far superior to netfx.Guard apart from just one feature&amp;#33;&lt;br /&gt;&lt;br /&gt;Condition.Requires&amp;#40;&amp;#41; that you manually type the name for the parameter being checked.&lt;br /&gt;netfx.Guard uses this syntax&amp;#58;&lt;br /&gt;&lt;br /&gt;Guard.IsNotNull&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; paramName&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;The parameter name is extracted automatically by visiting the expression tree.&lt;br /&gt;Should be easy to implement&amp;#33;&lt;br /&gt;Comments: ** Comment from web user: georgiosd ** &lt;p&gt;Example&amp;#58;&lt;/p&gt;&lt;p&gt;public static void NotNull&amp;#60;TResult&amp;#62;&amp;#40;Expression&amp;#60;Func&amp;#60;TResult&amp;#62;&amp;#62; expression&amp;#41;&lt;br /&gt;            where TResult &amp;#58; class&lt;br /&gt;        &amp;#123;&lt;br /&gt;            if &amp;#40;expression.Compile&amp;#40;&amp;#41;&amp;#40;&amp;#41; &amp;#61;&amp;#61; null&amp;#41;&lt;br /&gt;            &amp;#123;&lt;br /&gt;                var argName &amp;#61; GetParameterName&amp;#40;expression&amp;#41;&amp;#59;&lt;br /&gt;                throw new ArgumentNullException&amp;#40;argName&amp;#41;&amp;#59;&lt;br /&gt;            &amp;#125;&lt;br /&gt;        &amp;#125;&lt;/p&gt;</description><author>georgiosd</author><pubDate>Sun, 22 Apr 2012 23:51:19 GMT</pubDate><guid isPermaLink="false">Commented Issue: Include Condition.Requires overloads with Func&lt;&gt; to get parameter name [17905] 20120422115119P</guid></item><item><title>Commented Issue: Include Condition.Requires overloads with Func&lt;&gt; to get parameter name [17905]</title><link>http://conditions.codeplex.com/workitem/17905</link><description>Your library is far superior to netfx.Guard apart from just one feature&amp;#33;&lt;br /&gt;&lt;br /&gt;Condition.Requires&amp;#40;&amp;#41; that you manually type the name for the parameter being checked.&lt;br /&gt;netfx.Guard uses this syntax&amp;#58;&lt;br /&gt;&lt;br /&gt;Guard.IsNotNull&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; paramName&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;The parameter name is extracted automatically by visiting the expression tree.&lt;br /&gt;Should be easy to implement&amp;#33;&lt;br /&gt;Comments: ** Comment from web user: georgiosd ** &lt;p&gt;Here&amp;#39;s the code&amp;#58;&lt;/p&gt;&lt;p&gt;private static string GetParameterName&amp;#40;Expression reference&amp;#41;&lt;br /&gt;        &amp;#123;&lt;br /&gt;            var lambda &amp;#61; reference as LambdaExpression&amp;#59;&lt;br /&gt;            var member &amp;#61; lambda.Body as MemberExpression&amp;#59;&lt;/p&gt;&lt;p&gt;            return member.Member.Name&amp;#59;&lt;br /&gt;        &amp;#125;&lt;/p&gt;</description><author>georgiosd</author><pubDate>Sun, 22 Apr 2012 23:50:29 GMT</pubDate><guid isPermaLink="false">Commented Issue: Include Condition.Requires overloads with Func&lt;&gt; to get parameter name [17905] 20120422115029P</guid></item><item><title>Created Issue: Include Condition.Requires overloads with Func&lt;&gt; to get parameter name [17905]</title><link>http://conditions.codeplex.com/workitem/17905</link><description>Your library is far superior to netfx.Guard apart from just one feature&amp;#33;&lt;br /&gt;&lt;br /&gt;Condition.Requires&amp;#40;&amp;#41; that you manually type the name for the parameter being checked.&lt;br /&gt;netfx.Guard uses this syntax&amp;#58;&lt;br /&gt;&lt;br /&gt;Guard.IsNotNull&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; paramName&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;The parameter name is extracted automatically by visiting the expression tree.&lt;br /&gt;Should be easy to implement&amp;#33;&lt;br /&gt;</description><author>georgiosd</author><pubDate>Sun, 22 Apr 2012 23:48:38 GMT</pubDate><guid isPermaLink="false">Created Issue: Include Condition.Requires overloads with Func&lt;&gt; to get parameter name [17905] 20120422114838P</guid></item><item><title>New Post: Custom exception from custom validator</title><link>http://conditions.codeplex.com/discussions/283393</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Makes sense now, thanks&lt;/p&gt;&lt;/div&gt;</description><author>bugmenot2</author><pubDate>Wed, 21 Dec 2011 09:30:39 GMT</pubDate><guid isPermaLink="false">New Post: Custom exception from custom validator 20111221093039A</guid></item><item><title>New Post: Custom exception from custom validator</title><link>http://conditions.codeplex.com/discussions/283393</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;That sounds like right. Here's an example:&lt;/p&gt;
&lt;p&gt;
&lt;div style="color: black; background-color: white;"&gt;
&lt;pre&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; ConditionValidator&amp;lt;T&amp;gt; ThrowSomethingElse&amp;lt;T&amp;gt;(
    &lt;span style="color: blue;"&gt;this&lt;/span&gt; ConditionValidator&amp;lt;T&amp;gt; validator)
{
    &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; MyValidator&amp;lt;T&amp;gt;(validator.Value, validator.ArgumentName);
}

&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;sealed&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; MyValidator&amp;lt;T&amp;gt; : ConditionValidator&amp;lt;T&amp;gt;
{
    &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; ThrowExceptionCore(&lt;span style="color: blue;"&gt;string&lt;/span&gt; condition,
        &lt;span style="color: blue;"&gt;string&lt;/span&gt; additionalMessage, ConstraintViolationType type)
    {
        &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; ArgumentFailureException(
            condition + &lt;span style="color: #a31515;"&gt;". "&lt;/span&gt; + additionalMessage); 
    }
}
&lt;/pre&gt;
&lt;/div&gt;
Writing your own Validation method might be simpler, but this prevents you from using all the predefined validation methods that are already in the framework.&lt;/p&gt;&lt;/div&gt;</description><author>dot_net_junkie</author><pubDate>Tue, 20 Dec 2011 12:51:30 GMT</pubDate><guid isPermaLink="false">New Post: Custom exception from custom validator 20111220125130P</guid></item><item><title>New Post: Custom exception from custom validator</title><link>http://conditions.codeplex.com/discussions/283393</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;So what you're saying:&lt;/p&gt;
&lt;p&gt;* define a new validator "MyValidator&amp;lt;T&amp;gt;" which is a subclass of "ConditionValidator&amp;lt;T&amp;gt;"&lt;/p&gt;
&lt;p&gt;* that subclass has a copy constructor which accepts an instance of the parent type as an argument&lt;/p&gt;
&lt;p&gt;* "ThrowSomethingElse()" is an extension method on an instance of "ConditionValidator&amp;lt;T&amp;gt;"&lt;/p&gt;
&lt;p&gt;* it returns a new instance of "MyValidator&amp;lt;T&amp;gt;"&lt;/p&gt;
&lt;p&gt;* and... the subclass can throw custom exceptions&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This approach is much more intuitive than that in the docs, I like it. But isn't simply throwing a custom exception from the custom validator simpler (surely I get access to the base class from my custom validator anyway)?&lt;/p&gt;&lt;/div&gt;</description><author>bugmenot2</author><pubDate>Mon, 19 Dec 2011 20:27:13 GMT</pubDate><guid isPermaLink="false">New Post: Custom exception from custom validator 20111219082713P</guid></item><item><title>New Post: Custom exception from custom validator</title><link>http://conditions.codeplex.com/discussions/283393</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;That will work. ThrowException is purely there to abstract the exception type that's being thrown.&lt;/p&gt;
&lt;p&gt;Something else what you can do is define an extension method over ConditionValidator&amp;lt;T&amp;gt; that returns a new ConditionValidator&amp;lt;T&amp;gt; sub type. This way you can reuse all existing validation methods. You can do something like this:&lt;/p&gt;
&lt;p&gt;
&lt;div style="color: black; background-color: white;"&gt;
&lt;pre&gt;Condition.Requires(val, &lt;span style="color: #a31515;"&gt;"val"&lt;/span&gt;).ThrowSomethingElse()
    .IsNotNull()
    .IsInRange(10, 99);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/p&gt;&lt;/div&gt;</description><author>dot_net_junkie</author><pubDate>Mon, 19 Dec 2011 09:27:47 GMT</pubDate><guid isPermaLink="false">New Post: Custom exception from custom validator 20111219092747A</guid></item><item><title>New Post: Custom exception from custom validator</title><link>http://conditions.codeplex.com/discussions/283393</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;There is an explanation in the docs, of how to add custom exceptions to the library: http://conditions.codeplex.com/wikipage?title=extending. It requires subclassing the &amp;quot;ConditionValidator&amp;lt;T&amp;gt;&amp;quot;, which means that you cannot use &amp;quot;Condition.Requires()&amp;quot;,
 but must use &amp;quot;CustomWhatever.Requires()&amp;quot;, which I don't like.&lt;br&gt;
&lt;br&gt;
Suppose I'd like to throw a &amp;quot;ArgumentFailureException&amp;quot; when my custom validator fails. So, in my custom validator, may I write:&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ArgumentFailureException(&amp;quot;kaboom!&amp;quot;);&lt;br&gt;
instead of:&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; validator.ThrowException(&amp;quot;kaboom!&amp;quot;);&lt;br&gt;
&lt;br&gt;
Will I break something in the library?&lt;/p&gt;
&lt;/div&gt;</description><author>bugmenot2</author><pubDate>Sun, 18 Dec 2011 23:03:47 GMT</pubDate><guid isPermaLink="false">New Post: Custom exception from custom validator 20111218110347P</guid></item><item><title>New Post: assert instead of throw</title><link>http://conditions.codeplex.com/discussions/281380</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Yes seems good. Only in the ConditionAssert class I would set the flag explicitly, without considering the #DEBUG symbol (as that would be the purpose of that class).&lt;/p&gt;
&lt;p&gt;Also, I'd refactor the ConditionValidator class to make the check itself, and avoid having to change the dozens of validators. Then I'd just call the protected validator method from the abstract base class' method. Something like so:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public validate(...) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (IsDebug) { ... }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else { validateImpl(); }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected abstract validateImpl();&amp;nbsp; // implemented in the validator subclasses&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Actually it seems like quite a neat implementation.&lt;/p&gt;&lt;/div&gt;</description><author>bugmenot2</author><pubDate>Sun, 04 Dec 2011 22:33:56 GMT</pubDate><guid isPermaLink="false">New Post: assert instead of throw 20111204103356P</guid></item><item><title>New Post: assert instead of throw</title><link>http://conditions.codeplex.com/discussions/281380</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;For this to work, a boolean flag has to be added to the abstract ConditionValidator&amp;lt;T&amp;gt; class, and every single validation method should skip the check when the flag is set. In your local ConditionAssert class you must set this flag in debug mode to prevent any validations from being executed.&lt;/p&gt;&lt;/div&gt;</description><author>dot_net_junkie</author><pubDate>Sun, 04 Dec 2011 18:53:36 GMT</pubDate><guid isPermaLink="false">New Post: assert instead of throw 20111204065336P</guid></item><item><title>New Post: assert instead of throw</title><link>http://conditions.codeplex.com/discussions/281380</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;In theory, would the following work?&lt;br /&gt;- add a debug/release flag in "ConditionAssert"&lt;br /&gt;- check that flag in every validator, and throw/assert appropriately&lt;/p&gt;
&lt;p&gt;There are dozens of validators, so it would be a PITA to refactor all of them--so is there a base class into which I could place that functionality? Could I do it in "ConditionValidator" and "ConditionValidator&amp;lt;T&amp;gt;", perhaps in the constructor?&lt;span id="sel_marquee_t" class="sel_marquee"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><author>bugmenot2</author><pubDate>Sun, 04 Dec 2011 16:19:43 GMT</pubDate><guid isPermaLink="false">New Post: assert instead of throw 20111204041943P</guid></item><item><title>New Post: assert instead of throw</title><link>http://conditions.codeplex.com/discussions/281380</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;I'm sorry, but I made a mistake. The ConditionAssert class is utterly useless. What Debug.Assert (or [ConditionAttribute("DEBUG")] in general) is supposed to do is to remove the check completely, but this is not what happens. The only thing that will get suppressed in release mode is the throwing of the exception (or showing a dialog box, in the case of the Debug.Assert). The verification check itself however, is always executed.&lt;/p&gt;
&lt;p&gt;It is this check that you normally want to prevent from happening, usually because of performance reasons. But since the check is always performed, it would be silly to suppress the throwing of the exception in release mode, since at that point we already established a bug in the software, and we&amp;rsquo;d better throw to prevent further damage to the system.&lt;/p&gt;
&lt;p&gt;With the way CuttingEdge.Conditions is currently designed it is impossible to achieve this. Main reason for this is because both the entry point methods (Requires, Ensures) and the validation methods (IsNotNull, IsGreaterThan, etc) return a value. The C# and VB compilers will therefore not allow calls to those methods to be suppressed.&lt;/p&gt;
&lt;p&gt;If you really want to suppress certain checks because of performance considerations, you&amp;rsquo;ve got two options:&lt;br /&gt;&lt;br /&gt;1. Use #if DEBUG:&lt;/p&gt;
&lt;p&gt;
&lt;div style="color: black; background-color: white;"&gt;
&lt;pre&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; DoSomething(IEnumerable&amp;lt;Element&amp;gt; col)
{
&lt;span style="color: blue;"&gt;#if&lt;/span&gt; DEBUG
    Condition.Requires(&lt;span style="color: #a31515;"&gt;"col"&lt;/span&gt;).ContainsAll(requeredElements);
&lt;span style="color: blue;"&gt;#endif&lt;/span&gt;
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;2. Move validation to another method:&lt;/p&gt;
&lt;p&gt;
&lt;div style="color: black; background-color: white;"&gt;
&lt;pre&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; DoSomething(IEnumerable&amp;lt;Element&amp;gt; col)
{
    ValidateArguments(col);
}

[Condition(&lt;span style="color: #a31515;"&gt;"DEBUG"&lt;/span&gt;)]
&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; ValidateArguments(IEnumerable&amp;lt;Element&amp;gt; col)
{
    Condition.Requires(col, &lt;span style="color: #a31515;"&gt;"col"&lt;/span&gt;).ContainsAll(requeredElements);
}
&lt;/pre&gt;
&lt;/div&gt;
I hope this helps.&lt;/p&gt;&lt;/div&gt;</description><author>dot_net_junkie</author><pubDate>Sun, 04 Dec 2011 10:13:30 GMT</pubDate><guid isPermaLink="false">New Post: assert instead of throw 20111204101330A</guid></item><item><title>New Post: custom validator: IsNotNullOrEmptyOrWhitespace</title><link>http://conditions.codeplex.com/discussions/281476</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hehe.. you got me, it isn't cutting edge ;-).&lt;/p&gt;
&lt;p&gt;I want Conditions to stay backward compatible for some time, or until there is a strong reason to go to .NET 4.0. But the IsNullOrWhiteSpace method alone doesn't seem like a valid reason to force a dependency on 4.0.&lt;/p&gt;&lt;/div&gt;</description><author>dot_net_junkie</author><pubDate>Thu, 01 Dec 2011 19:07:20 GMT</pubDate><guid isPermaLink="false">New Post: custom validator: IsNotNullOrEmptyOrWhitespace 20111201070720P</guid></item><item><title>New Post: custom validator: IsNotNullOrEmptyOrWhitespace</title><link>http://conditions.codeplex.com/discussions/281476</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Not use it! Why, I thought it was cutting edge?&lt;/p&gt;
&lt;p&gt;Good point re versioning.&lt;/p&gt;&lt;/div&gt;</description><author>bugmenot2</author><pubDate>Thu, 01 Dec 2011 19:00:11 GMT</pubDate><guid isPermaLink="false">New Post: custom validator: IsNotNullOrEmptyOrWhitespace 20111201070011P</guid></item><item><title>New Post: custom validator: IsNotNullOrEmptyOrWhitespace</title><link>http://conditions.codeplex.com/discussions/281476</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;I must admit I find the IsNullOrWhiteSpace name not intuitive, but I decided to stick to that name in Conditions. Choosing the same name is less confusing, because now developers could at least expect the method to behave the same as the String.IsNullOrWhiteSpace method of the framework.&lt;/p&gt;
&lt;p&gt;The String.IsNullOrWhiteSpace method is new in .NET 4.0, but CuttingEdge.Conditions is for .NET 2.0 and up and therefore cannot take a dependency on .NET 4.0 functionality. That's why it does the char-by-char check itself, instead of depending on String.IsNullOrWhiteSpace. I don't really think that the framework's implementation will ever be much faster than it currently is, so I don't think that's something you should really worry about. If you worry about that kind of optimizations, perhaps using CuttingEdge.Conditions isn't a wise thing in the first place ;-).&lt;/p&gt;
&lt;p&gt;Cheers&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>dot_net_junkie</author><pubDate>Thu, 01 Dec 2011 18:46:01 GMT</pubDate><guid isPermaLink="false">New Post: custom validator: IsNotNullOrEmptyOrWhitespace 20111201064601P</guid></item></channel></rss>