C# "as" keyword with objects of various types
<p>How to correctly rewrite this code to be <em>foolproof</em> versus various types of input parameter? Currently this code fails if, for instance, input parameter is a valid instance of <code>DateTime</code>. I've just figured that out - it was wrongly returning <code>false</code> for todays date. </p>

<pre><code>    public override bool IsValid(object value)
    {
        string field = value as string;

        if (String.IsNullOrEmpty(field))
            return false;

        return true;
    }
</code></pre>

<p>Would be nice to know if this is possible without having multiple if statements (for every possible value 
type and even for some reference types, like the string).</p>

<p>EDIT: oh, of course, the requirement is for the object to not be null or whitespace (therefore it has to be castable or parsable to string, I guess).</p>
