C# not choosing the right overload with a default value
<p>I am using the <a href="http://fluentvalidation.codeplex.com/" rel="nofollow">FluentValidation framework</a> in C# which has the following two method overloads:</p>

<pre><code>IRuleBuilder&lt;TObject, TProperty&gt;
    IRuleBuilderOptions&lt;TObject, TProperty&gt; Equal(TProperty toCompare, [IEqualityComparer comparer = null])
    IRuleBuilderOptions&lt;TObject, TProperty&gt; Equal(Expression&lt;Func&lt;TObject,TProperty&gt;&gt; expression, [IEqualityComparer comparer = null])
</code></pre>

<p>Basically one of the overloads lets you pass in an actual TProperty to compare, and the other lets you do a lambda that returns a TProperty from a TObject.</p>

<p>When I do the following it works:</p>

<pre><code>RuleFor(r =&gt; r.First).Equals(r =&gt; r.Second);
</code></pre>

<p>It is getting the right overload in this case. When I try and pass in a value for the comparer it defaults to the other overload:</p>

<pre><code>RuleFor(r =&gt; r.First).Equals(r =&gt; r.Second, new ObjectComparer()); // will not compile
</code></pre>

<p>This will not compile because it thinks I'm trying to use the first overload.</p>

<p>Is there a way I can force C# to use the second overload?</p>

<p>Edit:</p>

<p>ObjectComparer is an IEqualityComparer:</p>

<pre><code>public class ObjectComparer : IEqualityComparer&lt;MyClass&gt;
{
     // ...
}
</code></pre>
