Comment remplacer l'opérateur égal == pour une interface en C #?

J'ai défini l'interface suivante

public interface IHaveAProblem
{
    string Issue { get; set; }
}

Et ici est la mise en œuvre de la IHaveAProblem

public class SomeProblem : IHaveAProblem
{
    public string Issue { get; set; }

    public override bool Equals(object obj)
    {
        SomeProblem otherObj = obj as SomeProblem;

        if (otherObj == null)
        {
            return false;
        }

        return this.Issue == otherObj.Issue;
    }

    public override int GetHashCode()
    {
        return base.GetHashCode();
    }

    public static bool operator ==(SomeProblem rhs, SomeProblem lhs)
    {
        //Null check
        if (Object.ReferenceEquals(rhs, null) || Object.ReferenceEquals(lhs, null))
        {
            if (Object.ReferenceEquals(rhs, null) && Object.ReferenceEquals(lhs, null))
            {
                //Both are null.  They do equal each other
                return true;
            }

            //Only 1 is null the other is not so they do not equal
            return false;
        }

        return rhs.Equals(lhs);
    }

    public static bool operator !=(SomeProblem rhs, SomeProblem lhs)
    {
        //Null check
        if (Object.ReferenceEquals(rhs, null) || Object.ReferenceEquals(lhs, null))
        {
            if (Object.ReferenceEquals(rhs, null) && Object.ReferenceEquals(lhs, null))
            {
                //Both are null.  They do equal each other
                return false;
            }

            //Only 1 is null the other is not so they do not equal
            return true;
        }

        return !rhs.Equals(lhs);
    }
}

Lorsque j'utilise l'objet que je peut obtenir des résultats corrects pour l' == comparer.

SomeProblem firstTest = new SomeProblem()
    {
        Issue = "Hello World"
    };

SomeProblem secondTest = new SomeProblem()
    {
        Issue = "Hello World"
    };

//This is true
bool result = firstTest == secondTest;

Cependant lorsque j'essaie de comparer les interfaces qu'il est en train de faire un mémoire de comparer plutôt que l'opérateur == sur SomeProblem

IHaveAProblem firstProblem = new SomeProblem()
    {
        Issue = "Hello World"
    };

IHaveAProblem secondProblem = new SomeProblem()
    {
        Issue = "Hello World"
    };

Est-il possible d'avoir l'interface de l'utilisation de l' == sur SomeProblem plutôt que d'une mémoire de comparer?

Je sais que je peux faire un firstProblem.Equals(secondProblem) et obtenir le bon résultat, mais je suis entrain de créer un cadre de travail et je sais pas comment il est utilisé dans la fin. J'ai pensé == fonctionnerait correctement.

source d'informationauteur David Basarab