Freigeben über


Compilerfehler CS0473

Aktualisiert: November 2007

Fehlermeldung

Die explizite Schnittstellenimplementierung "Methodenname" entspricht mehreren Schnittstellenmembern. Es hängt von der Implementierung ab, welcher Schnittstellenmember ausgewählt wird. Verwenden Sie stattdessen eine nicht explizite Implementierung.
Explicit interface implementation 'method name' matches more than one interface member. Which interface member is actually chosen is implementation-dependent. Consider using a non-explicit implementation instead.

Gelegentlich kann eine generische Methode die gleiche Signatur wie eine nicht generische Methode erhalten. Das Problem ist, dass das Metadatensystem der Common Language Infrastructure (CLI) keine Möglichkeit bietet, eindeutig festzustellen, welche Methode an welchen Slot gebunden wird. Diese Feststellung muss von der CLI vorgenommen werden.

Hinweis:

Dieser Fehler wird in Visual Studio 2008 an Stellen ausgelöst, an denen er in Visual Studio 2005 nicht ausgelöst wurde.

So beheben Sie diesen Fehler

  • Eliminieren Sie die explizite Implementierung, und lassen Sie beide Schnittstellenmethoden von der impliziten Implementierung public int TestMethod(int) implementieren.

Beispiel

Durch den folgenden Code wird der Fehler CS0473 ausgelöst:

// cs0473.cs
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;
    }
}

Siehe auch

Weitere Ressourcen

Fabulous Adventures in Coding