Why code inside Generic functions ignores overloaded == operator
<p>What is the workaround to this problem?</p>

<pre><code>class Program
{
    static void Main(string[] args)
    {
        var a = new Test();
        var b = new Test();
        var eq = Check(a, b);
    }

    private static bool Check&lt;T&gt;(T a, T b) where T : class
    {
        return a == b; //will not call overloaded == 
    }
}
public class Test
{
    public override bool Equals(object obj)
    {
        Test other = obj as Test;
        if (ReferenceEquals(other, null)) return false;
        return true;
    }
    public static bool operator ==(Test left, Test right)
    {
        return Equals(left, right);
    }

    public static bool operator !=(Test left, Test right)
    {
        return !(left == right);
    }
}
</code></pre>
