У меня есть оператор switch в одном классе, который генерирует объекты Command, основываясь на том, соответствует ли определенная строка в файле кода конкретному коду для этого объекта Command.Использование свойств в операциях с операторами switch?
так:
switch (line):
{
case "#CODE1":
return new Command1();
case "#CODE2":
return new Command2();
}
Я хочу, чтобы превратить его в нечто вроде этого:
switch (line):
{
case Command1.Code:
return new Command1();
case Command2.Code:
return new Command2();
}
Я попробовал его, создав общественное статическое свойство Command1, но компилятор жалуется ...
Есть ли способ сделать что-то в этом намерении, о котором компилятор не будет жаловаться?
Мне не нравится, когда строковые константы должны быть «запомнены». Я хочу, чтобы они были привязаны к их соответствующим командам. Такой возможности нет. Intellisense поймает их. –
Правда, но у вас все еще есть опечатки в вашем файле кода. Дело в том, чтобы делать то, что вы хотите, сначала нужно создать экземпляр переменной. Вы не можете создать новый экземпляр после проверки значения свойства, вам нужно создать экземпляр, прежде чем вы сможете проверить свое значение. – Beth
После прочтения вашего комментария ниже, я не уверен, почему компилятор будет жаловаться на оператор switch, а не if/then/else. Я думал, что он жалуется на вашу ссылку на объект, хотя это было неясно. Если вы получили его для работы с структурой if/then/else, и вы изменили его обратно на переключатель, вы все еще получаете ошибки от компилятора? – Beth