Leggere in inglese

Condividi tramite


Errore del compilatore CS0473

L'implementazione esplicita dell'interfaccia 'method name' corrisponde a più membri di interfaccia. La scelta effettiva del membro dipende dall'interfaccia. Provare a usare un'implementazione non esplicita.

In alcuni casi un metodo generico potrebbe acquisire la stessa firma di un metodo non generico. Il problema è che non è possibile nel sistema di metadati dell'infrastruttura CLI (Common Language Infrastructure ) dichiarare in modo non ambiguo i metodi associati agli slot. Tale determinazione dipende dall'infrastruttura CLI.

Per correggere l'errore

Per correggere l'errore, eliminare l'implementazione esplicita e implementare entrambi i metodi di interfaccia nell'implementazione implicita public int TestMethod(int).

Esempio

Il codice seguente genera l'errore CS0473:

public interface ITest<T>
{
    int TestMethod(int i);
    int TestMethod(T i);
}

public class ImplementingClass : ITest<int>
{
    int ITest<int>.TestMethod(int i) // CS0473
    {
        return i + 1;
    }

    public int TestMethod(int i)
    {
        return i - 1;
    }
}

class T
{
    static int Main()
    {
        ImplementingClass a = new ImplementingClass();
        if (a.TestMethod(0) != -1)
            return -1;

        ITest<int> i_a = a;
        System.Console.WriteLine(i_a.TestMethod(0).ToString());
        if (i_a.TestMethod(0) != 1)
            return -1;

        return 0;
    }
}

Vedi anche