Extension method marked as ambiguous
<p>I am having trouble with extension methods. Another method was causing the same error, now I am having the same issue again. While compiling - visual studio is marking my extension method as ambiguous. But I am pretty sure this is the only implementation I have - </p>

<p>The extension method I have is - </p>

<pre><code>public static class TypeInfoExtensions
{
    /// &lt;summary&gt;
    /// Gets the property dictionary.
    /// &lt;/summary&gt;
    /// &lt;typeparam name="T"&gt;&lt;/typeparam&gt;
    /// &lt;param name="types"&gt;The types.&lt;/param&gt;
    /// &lt;returns&gt;&lt;/returns&gt;
    public static IEnumerable&lt;Dictionary&lt;string, object&gt;&gt; GetPropertyDictionaryList&lt;T&gt;(this IEnumerable&lt;TypeInfo&gt; types) where T : Attribute
    {
        return types.Select(x =&gt; x.GetPropertyDictionary&lt;T&gt;());
    }
    /// &lt;summary&gt;
    /// Gets the property dictionary.
    /// &lt;/summary&gt;
    /// &lt;typeparam name="T"&gt;&lt;/typeparam&gt;
    /// &lt;param name="type"&gt;The type.&lt;/param&gt;
    /// &lt;returns&gt;&lt;/returns&gt;
    public static Dictionary&lt;string, object&gt; GetPropertyDictionary&lt;T&gt;(this TypeInfo type) where T : Attribute
    {
        var dict = new Dictionary&lt;string, object&gt;();

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

<p>And it is used like this - </p>

<pre><code>var model = ...... // other codes

var parameters = Assembly.GetAssembly(typeof (Model.Domain.Tenants.Tenant)).DefinedTypes;
model.AvailableProperties = parameters.GetPropertyDictionaryList&lt;MessageTemplateItem&gt;().ToList()
</code></pre>

<p>This is the only implementation I have, I just added it, but VS is showing this error - </p>

<blockquote>
  <p>Error 81  The call is ambiguous between the following methods or
  properties:
  'SMP.Core.Extensions.TypeInfoExtensions.GetPropertyDictionary(System.Reflection.TypeInfo)'
  and
  'SMP.Core.Extensions.TypeInfoExtensions.GetPropertyDictionary(System.Reflection.TypeInfo)'</p>
</blockquote>

<p>I am thinking this might be a temporary error, may be cleaning the solution is not cleaning references or cache. But if any body else have faced this error, I would very much appreciate your feedback.</p>

<p><strong>UPDATE</strong> Strangely enough this code works - </p>

<pre><code>public static IEnumerable&lt;Dictionary&lt;string, object&gt;&gt; GetPropertyDictionaryList&lt;T&gt;(this IEnumerable&lt;TypeInfo&gt; types) where T : Attribute
{
    return types.Select(x =&gt; GetPropertyDictionary&lt;T&gt;(x));
}
</code></pre>

<p>I am really confused now, so far I knew these are the same for an extension method - </p>

<pre><code>GetPropertyDictionary&lt;T&gt;(x)
x.GetPropertyDictionary&lt;T&gt;()
</code></pre>

<p>Any ideas guys?</p>