Я видел пару подобных тем для этого вопроса, но никто из них не ответил на вопрос, который я хочу задать.C#: Перечисления в интерфейсах
Для начала, к сожалению, я работаю с существующим кодом API так грустно, хотя может быть лучший способ сделать то, о чем я прошу, я заперт, чтобы сделать это так же, как и потому, обратная совместимость не подлежит обсуждению.
У меня есть класс ответа, который в настоящее время содержит перечисление для кода ошибки и описания строки. Коды ошибок определяют довольно хороший и полный набор ответов, которые все очень семантически связаны с операциями, в которых они используются.
К сожалению, теперь мне нужно добавить другой рабочий процесс для аналогичного набора объектов API, и для этого потребуется описание строки, которое прекрасно, но также код ошибки перечисления, состоящий из абсолютно несвязанного набора кодов ошибок. Коды ошибок (и другие аспекты объектной модели) будут использоваться во многих одинаковых классах, поэтому было бы неплохо получить интерфейс, чтобы я мог запускать объекты через одну и ту же структуру.
Целью здесь является заключение договора, в котором говорится: «У меня есть код ошибки и описание этого кода ошибки».
Однако, насколько я знаю, что нет никакого способа, чтобы добавить элемент интерфейса, такие как
public interface IError
{
enum ErrorCode;
string Description;
}
не существует способ выразить
public interface IError<T> where T: enum
{
T ErrorCode;
string Description;
}
Любой каждый нарываться на что-то как раньше?
Какие операции вам понадобятся выполнить на ErrorCode, предоставленном этим интерфейсом? Если вам не нужен доступ к специфичному для Enum поведению, вы можете позволить ErrorCode быть любым типом без какого-либо вреда. –