在switch语句中使用属性?

Ale*_*sky 2 .net c# refactoring switch-statement

我在一个类中有一个switch语句,它根据代码文件中的某一行是否与该Command对象的特定代码匹配来生成Command对象.

像这样:

switch (line):
{
   case "#CODE1":
      return new Command1();
   case "#CODE2":
      return new Command2();
}
Run Code Online (Sandbox Code Playgroud)

我想把它变成这样的东西:

switch (line):
{
   case Command1.Code:
      return new Command1();
   case Command2.Code:
      return new Command2();
}
Run Code Online (Sandbox Code Playgroud)

我通过创建Command1的公共静态属性来尝试它,但编译器抱怨...

有没有办法按照这个意图做一些事情,编译器不会抱怨?

Bot*_*000 9

我认为你只能用常量来做这个...所以如果你可以使用常量字段而不是公共静态属性.区别在于它在编译时被视为文字,因此如果值发生更改,则需要重新编译引用该常量的所有程序集.