Compilerfehler CS0686
Der "Accessor"-Accessor kann den Schnittstellenmember "Member" für Typ "Typ" nicht implementieren.Verwenden Sie eine explizite Schnittstellenimplementierung.
Empfohlen: Dieser Fehler kann beim Implementieren einer Schnittstelle auftreten, die Methodennamen enthält, die im Konflikt mit den automatisch generierten Methoden stehen, die mit einer Eigenschaft oder einem Ereignis verknüpft sind.Die get/set-Methoden für Eigenschaften werden als get_property und set_property generiert, und die Methoden zum Hinzufügen/Entfernen von Ereignisse werden als add_event und remove_event generiert.Wenn eine Schnittstelle beide Methoden enthält, tritt ein Konflikt auf.Um diesen Fehler zu vermeiden, implementieren Sie die Methoden mit einer expliziten Schnittstellenimplementierung.Geben Sie dazu die Funktion wie folgt an:
Interface.get_property() { /* */ }
Interface.set_property() { /* */ }
Beispiel
Im folgenden Beispiel wird CS0686 generiert:
// CS0686.cs
interface I
{
int get_P();
}
class C : I
{
public int P
{
get { return 1; } // CS0686
}
}
// But the following is valid:
class D : I
{
int I.get_P() { return 1; }
public static void Main() {}
}
Dieser Fehler kann auch beim Deklarieren von Ereignissen auftreten.Das Ereigniskonstrukt generiert die Methoden add_event und remove_event automatisch. Das kann zu einem Konflikt mit den gleichnamigen Methoden in einer Schnittstelle führen, wie im folgenden Beispiel dargestellt:
// CS0686b.cs
using System;
interface I
{
void add_OnMyEvent(EventHandler e);
}
class C : I
{
public event EventHandler OnMyEvent
{
add { } // CS0686
remove { }
}
}
// Correct (using explicit interface implementation):
class D : I
{
void I.add_OnMyEvent(EventHandler e) {}
public static void Main() {}
}