I'm making a command-line interface, and I have a list of commands.
I want to use a list of command strings to generate an enum.
Why do this when you have the list?
Because this:
switch(cmd){caseCOMMANDS[0]:/* ... */}
It throws an error that the case isn't constant (as I GUESS it should rightfully do so), therefore, I need to manually right all of the commands down again.
In the example, there's a dictionary containing all available commands. Each command implements the ICommand interface (and the Execute() method, which gets executed by the while loop in Main). You can add fields to the ICommand interface to store the command's name or usage description if you want.
This doesn't directly answer your question but hopefully helps in some way.
Doesn't making a new class for every command seem bloated?
Otherwise, this does help.
It's actually advisable because it makes adding new functionality / commands easier and the code is more readable/easier to maintain. The performance impact is minimal (C# is really good at optimizations).
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
I'm making a command-line interface, and I have a list of commands.
I want to use a list of command strings to generate an enum.
Why do this when you have the list?
Because this:
It throws an error that the case isn't constant (as I GUESS it should rightfully do so), therefore, I need to manually right all of the commands down again.
Ah, this makes sense. Since it won't let you use plain string arrays, you could try a more OOP approach using Dictionaries and custom command classes.
In the example, there's a dictionary containing all available commands. Each command implements the ICommand interface (and the
Execute()
method, which gets executed by thewhile
loop inMain
). You can add fields to the ICommand interface to store the command's name or usage description if you want.This doesn't directly answer your question but hopefully helps in some way.
Doesn't making a new class for every command seem bloated?
Otherwise, this does help.
Thanks for the help.
Is there a way I can convert all the
String
constants of a class to aString[]
?It's actually advisable because it makes adding new functionality / commands easier and the code is more readable/easier to maintain. The performance impact is minimal (C# is really good at optimizations).