Рассмотрим следующий кодпараметр Метод с сильно типизированных типа Enum
enum HorizontalAlignment { Left, Middle, Right };
enum VerticleAlignment { Top, Middle, Bottom };
function OutputEnumValues (Type enumType)
{
foreach (string name in Enum.GetNames(typeof(enumType)))
{
Console.WriteLine(name);
}
}
который можно назвать как
OutputEnumValues (typeof(HorizontalAlignment));
OutputEnumValues (typeof(VerticleAlignment));
Но я мог бы ненароком назвать, например
OutputEnumValues (typeof(int));
И это будет компилироваться, но сбой во время выполнения в Enum.GetNames()
Любой способ написания сигнатуры метода, чтобы поймать эту проблему во время компиляции - т. Е. Только принимать типы перечисления в OutputEnumValues?
Переходя в 0, набрав enum, немного «грязно» и не будет очевидным для пользователей метода, но может быть наименее худшим вариантом, поэтому +1 от меня. – Ryan