Ich habe ein paar ähnliche Threads zu dieser Frage gesehen, aber keine von ihnen beantwortet wirklich die Frage, die ich stellen möchte.C#: Enums in Interfaces
Für den Anfang, leider arbeite ich mit vorhandenen API-Code so traurig, während es eine bessere Möglichkeit gibt, zu tun, worum ich frage, bin ich dazu verdammt, es ähnlich zu tun, weil es weil Rückwärtskompatibilität ist nicht verhandelbar.
Ich habe eine Antwortklasse, die derzeit eine Enumeration für einen Fehlercode und eine Zeichenfolge Beschreibung enthält. Die Fehlercodes definieren einen ziemlich netten und vollständigen Satz von Antworten, die alle sehr semantisch mit den Operationen gekoppelt sind, in denen sie verwendet werden.
Leider muss ich jetzt einen anderen Workflow für einen ähnlichen Satz von API-Objekten hinzufügen, und dies erfordert eine String-Beschreibung, die in Ordnung ist, aber auch einen Enum-Fehlercode, der aus einem völlig unzusammenhängenden Satz von Fehlercodes besteht. Die Fehlercodes (und andere Aspekte des Objektmodells) werden in vielen derselben Klassen verwendet, daher wäre es schön, eine Schnittstelle zu erhalten, so dass ich die Objekte durch das gleiche Framework ausführen kann.
Die Absicht hier ist, einen Vertrag zu machen, der sagt "Ich habe einen Fehlercode und eine Beschreibung dieses Fehlercodes."
aber soweit ich weiß, gibt es keine Möglichkeit, ein Element an eine Schnittstelle wie
public interface IError
{
enum ErrorCode;
string Description;
}
noch ein Weg
public interface IError<T> where T: enum
{
T ErrorCode;
string Description;
}
Jeden jeder gegen etwas lief bis zum Ausdruck bringen wird hinzufügen So wie vorher?
Welche Operationen werden Sie brauchen auf dem ErrorCode von dieser Schnittstelle durchgeführt werden? Wenn Sie keinen Zugriff auf Enum-spezifisches Verhalten benötigen, können Sie zulassen, dass der ErrorCode ein beliebiger Typ ohne Schaden ist. –