Вы можете немного изменить метод ConvertEnumToDictionary
и применить ограничение where K : Enum
generi c (доступно с C# 7.3) и привести значение Enum
к K
перед переходом к GetEnumDescription
метод
public static IDictionary<int, string> ConvertEnumToDictionary<K>() where K : Enum
{
var mydic = new Dictionary<int, string>();
foreach (var foo in Enum.GetValues(typeof(K)))
{
mydic.Add((int)foo, GetEnumDescription((K)foo));
}
return mydic;
}
Пример использования, который дает словарь с 3 парами ключ-значение
var result = ConvertEnumToDictionary<Lu_LanguageTypes>();
Другой вариант - добавить ограничение к интерфейсу IConvertible
. (поскольку тип Enum
реализует это) и избегайте приведения
public static IDictionary<int, string> ConvertEnumToDictionary<K>() where K : Enum, IConvertible
{
var mydic = new Dictionary<int, string>();
foreach (K foo in Enum.GetValues(typeof(K)))
{
mydic.Add(foo.ToInt32(null), GetEnumDescription(foo));
}
return mydic;
}