Ho visto un paio di thread simili a questa domanda, ma nessuno di loro risponde veramente alla domanda che voglio porre.C#: Enums in Interfaces
Per i principianti, sfortunatamente sto lavorando con il codice API esistente così tristemente, mentre potrebbe esserci un modo migliore per fare quello che sto chiedendo, sono bloccato a farlo in modo simile a come lo è perché la retrocompatibilità non è negoziabile.
Ho una classe di risposta che contiene attualmente un enum per un codice di errore e una descrizione di stringa. I codici di errore definiscono un insieme di risposte abbastanza bello e completo che sono tutte molto semanticamente collegate alle operazioni in cui vengono utilizzate.
Sfortunatamente, ora devo aggiungere un flusso di lavoro diverso per un insieme simile di oggetti API, e ciò richiederà una descrizione di stringa, che va bene, ma anche un codice di errore enum consistente in un set di codici di errore totalmente non correlato. I codici di errore (e altri aspetti del modello di oggetti) saranno usati in molte delle stesse classi, quindi sarebbe bello avere un'interfaccia che possa far girare gli oggetti attraverso lo stesso framework.
L'intento qui è quello di fare un contratto che dice "Ho un codice di errore, e una descrizione di quel codice di errore".
Tuttavia, per quanto ne so non c'è modo per aggiungere un elemento a un'interfaccia come
public interface IError
{
enum ErrorCode;
string Description;
}
né v'è un modo per esprimere
public interface IError<T> where T: enum
{
T ErrorCode;
string Description;
}
Chiunque ogni corsa contro qualcosa come prima?
Quali operazioni avrete bisogno eseguire sul ErrorCode fornito da questa interfaccia? Se non è necessario accedere al comportamento specifico di Enum, è possibile consentire a ErrorCode di essere di qualsiasi tipo senza danni. –