使用switch将String转换为局部变量

时间:2015-03-27 13:48:45

标签: c#

我知道这听起来有点奇怪但是可以将字符串转换为局部变量,如下所示:

String actionName = "eat";
(local variable)actionName;

Pet.actionName;
//and computer will read it as Pet.eat;
切换中的

看起来像是这样:

String actionName = "eat";

switch (actionName)
{
    eat:
       return  Pet.eat;
    default:
       return;
}

1 个答案:

答案 0 :(得分:5)

您可以使用反射

  String actionName = "eat"; // Actually, property/field name 

  // looks like you want to get static property
  // without creating Pet instance 
  var result = typeof(Pet).GetProperty(actionName, BindingFlags.Static | BindingFlags.Public).GetValue(null); 

如果actionName实际上是字段(不是属性),则语法应该稍微更改一下:

var result = typeof(Pet).GetField(actionName, BindingFlags.Static | BindingFlags.Public).GetValue(null);

编辑:如果Pet只是枚举,您只需解析

  String actionName = "eat";
  Pet result = (Pet) (Enum.Parse(typeof(Pet), actionName));