Próbuję znaleźć rozwiązanie tego problemu. To jest mój przykładowy kod:za pomocą kolekcji ciągów w oświadczeniu przełącznika
class Program
{
private string Command;
private static string[] Commands = { "ComandOne", "CommandTwo", "CommandThree", "CommandFour" };
static void Main(string[] args)
{
Command = args[0];
switch(Command)
{
case Commands[0]: //do something
break;
case Commands[1]: //do something else
break;
case Commands[2]: //do something totally different
break;
case Commands[3]: //do something boring
break;
default: //do your default stuff
break;
}
}
void DifferentMethod()
{
foreach(string c in Commands)
{
//do something funny
}
}
}
Ten kod nie działa, ponieważ wartości ciągu w przełączniku nie są stałe. Chcę napisać łatwy do utrzymania kod.
Lubię używać czegoś w rodzaju tablicy, ponieważ potrzebuję użyć tych samych wartości gdzie indziej w pętli.
Przy wartościach int enum byłoby idealne, ale nie znalazłem małego rozwiązania dla tej samej rzeczy ze stringami.
Większość rozwiązań sugerują wyliczeń, ale nazwy wyliczenie mają specjalne wymagania nazewnictwa. Jeśli powoduje to problemy, możesz powiązać atrybut "DescriptionAttribute" z każdym elementem wyliczającym, aby zawierał przyjazne nazwy (które mogą zawierać spacje lub cokolwiek innego) i może wyszukiwać te nazwy podczas iteracji nad wyliczeniem w ramach metody "DifferentMethod". – Brian
@Brian, dobry punkt, i aby uzyskać ten atrybut, będziesz potrzebował pola: 'FieldInfo enumField = typeof (Commands) .GetField (enumValue.ToString());' –
@Kirk Woll: Następne dwie linijki po tym : 'DescriptionAttribute da = (DescriptionAttribute) Attribute.GetCustomAttribute (enumField, typeof (DescriptionAttribute)); if (da.Description! = null) description = da.Description; ' – Brian