Общий метод C# Принимает, где значение перечисления в качестве параметра [дубликат

StackOverflow https://stackoverflow.com/questions/7347011

  •  27-10-2019
  •  | 
  •  

Вопрос

Возможный дубликат:
Создать общий метод, ограничивающий t в переводо

Учитывая общий метод, который работает только на значениях перечисления

static void <T> method(T enum) where T ?????
{
     // do something with enum...
}

Как я могу ограничить T Такие, что только значения перечисления приняты? Я пытался использовать struct Однако это не дает возможность использованию, вызывая мой метод с помощью нулевого типа перечисления.

Это было полезно?

Решение

Общие ограничения на типы перечисления невозможно в C#, но возможны в IL. Посмотрите на проект Джона Скита, Неограниченная мелодия, это позволит вам ограничить ваши общие методы для перечисления.

Другие советы

В C# вы не можете. По какой -то причине я не знаю спецификации C# явно запрещает System.Enum как ограничение.

И даже тогда он не примет нулевые перечисления, потому что нулевые перечисления не являются перечислениями.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top