使用字符串中的名称获取变量的值

时间:2013-04-23 23:58:23

标签: c# .net-2.0

我想从名称中获取变量的值。

为了澄清,XML文档将变量名称作为字符串传递;我想得到这个价值。

这样的事情:

string bublegumA = "strawberry";
string bubblegumB = "banana";   

//get which variable from the XML

string fromXML = "bubblegumB";

string output = getValue(fromXML);

//it should return "banana"

2 个答案:

答案 0 :(得分:4)

你做不到。变量名仅在设计时存在。一旦编译(没有调试符号),变量名就会丢失。

但你可以这样做:

var myValues = new Dictionary<string, string>();
myValues["bublegumA"] = "strawberry";
myValues["bublegumB"] = "banana";

string output = myValues["bublegumB"]; // "banana"

如果您不喜欢用于设置属性的字典语法,也可以使用ExpandoObject,尽管您仍然将其转换为字典以按名称获取值:

dynamic myValues = new ExpandoObject();
myValues.bublegumA = "strawberry";
myValues.bublegumB = "banana";

string output1 = myValues.bublegumB; // "banana"
string output2 = (string)((IDictionary<string, object>)myValues)["bublegumB"]; // "banana"

答案 1 :(得分:2)

基本上,这是反思的应用:

这应该有效,如果它是一个字段:

var value = targetObject.GetType().GetField(fromXml).GetValue(targetObject, null);

所以,如果你的班级是:

public class MyClass
{
    public string BubblegumA = "Strawberry";
}

然后在你的主要课程中:

public static void Main()
{
    MyClass targetObject = new MyClass();

    var value = targetObject.GetType().GetField("BubblegumA").GetValue(targetObject, null);

    //value should = Strawberry
}