Общий метод C# Принимает, где значение перечисления в качестве параметра [дубликат
-
27-10-2019 - |
Вопрос
Возможный дубликат:
Создать общий метод, ограничивающий t в переводо
Учитывая общий метод, который работает только на значениях перечисления
static void <T> method(T enum) where T ?????
{
// do something with enum...
}
Как я могу ограничить T
Такие, что только значения перечисления приняты? Я пытался использовать struct
Однако это не дает возможность использованию, вызывая мой метод с помощью нулевого типа перечисления.
Решение
Общие ограничения на типы перечисления невозможно в C#, но возможны в IL. Посмотрите на проект Джона Скита, Неограниченная мелодия, это позволит вам ограничить ваши общие методы для перечисления.
Другие советы
В C# вы не можете. По какой -то причине я не знаю спецификации C# явно запрещает System.Enum
как ограничение.
И даже тогда он не примет нулевые перечисления, потому что нулевые перечисления не являются перечислениями.