Из приведенного ниже URL: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters#enum -ограничений
Он читает
Перечисление ограничений Начиная с C# 7.3, вы также можете указать Тип System.Enum как ограничение базового класса. CLR всегда допускал это ограничение, но язык C# запрещал его. Обобщения, использующие System.Enum, обеспечивают безопасное для типов программирование для кэширования результатов от использования методов stati c в System.Enum. В следующем примере выполняется поиск всех допустимых значений для типа enum, а затем создается словарь, который сопоставляет эти значения с его строковым представлением.
с примером:
public static Dictionary<int, string> EnumNamedValues<T>() where T : System.Enum
{
var result = new Dictionary<int, string>();
var values = Enum.GetValues(typeof(T));
foreach (int item in values)
result.Add(item, Enum.GetName(typeof(T), item));
return result;
}
Is есть ли какой-нибудь способ ограничить его перечислением, но также с помощью целых чисел c типов?
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/integral-numeric-types
пример
public static Dictionary<int, string> EnumNamedValues<T>() where T : System.Enum (uint)
{
var result = new Dictionary<int, string>();
var values = Enum.GetValues(typeof(T));
foreach (int item in values)
result.Add(item, Enum.GetName(typeof(T), item));
return result;
}
Приведенный выше синтаксис "System.Enum (uint)" не работает (или я, конечно, не задавал бы вопрос!) ....... но показывает намерение того, что я спрашиваю.
Спасибо.