Implementieren enum in c# Oberfläche und in einer Oberfläche die Signatur der Methode
Habe ich eine Schnittstelle
Schnittstelle:
interface IThing
{
Enum MyEnum {get;set;}
string DoAction(MyEnum enumOptionChosen, string valueToPassIn);
}
Konkrete Umsetzung:
public class Thing : IThing
{
public enum MyEnum
{
FirstOption,
SecondOption,
ThirdOption
}
string doAction(MyEnum enumOptionChosen, string valueToPassIn)
{
switch(enumOptionChosen)
{
case MyEnum.FirstOption:
x();
break;
case MyEnum.SecondOption:
y();
break;
case MyEnum.ThirdOption:
z();
break;
}
}
}
Wenn ich versuche zu kompilieren bekomme ich die Meldung 'IThing.MyEnum' ist ein 'Eigentum' sondern wie ein 'geben.'
Ich bin etwas verpassen zu können, erfordern den Einsatz von Enum in der DoAction() Unterschrift.
Vielen Dank für jede Hilfe.
- Btw, der Fehler tritt in die Schnittstelle, nicht die Implementierung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Schnittstelle
MyEnum
ist der name der variable nicht der Typ, so wird es nicht vom compiler erkannt werden. Sie sollten in der Lage sein, dass Generika verwendet werden, um dies getan.Dann könnte man es umsetzen wie diese:
Erstens, erklären Sie Ihre enum außerhalb der Schnittstelle/Beton.
Dann in Ihrem interface:
Dann in Ihrer Klasse:
Ihr Hauptproblem war, die du versucht hast zu erklären, eine Rückgabe-Typ "Enum" von deinem interface, wenn Sie sollten erklären, einen Rückgabetyp "MyEnum".
Erinnern, enum ist ein Typ. Sie können nicht erzwingen, eine Klasse zu implementieren, die ein "Typ", nur die Eigenschaften/Methoden.
Dass gesagt wird, bin ich meinen Kopf kratzen, um zu versuchen und herauszufinden, was Sie zu tun versuchen.
Erkenne ich die original-Beitrag ist sehr alt, aber das ist ein anderer Ansatz, ist übersichtlich und funktioniert gut. Da die Enum-öffentlich ist, gehen Sie einfach weiter und definieren es außerhalb der konkreten Klasse und die Schnittstelle. (Ich habe mir die Freiheit genommen, mit der Umbenennung der enum-Typ zu TheEnum um Verwirrung zu vermeiden, mit der Eigenschaft, MyEnum.)
Verweisen dann in dein interface und konkreter Klasse.