2

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

澄清一下,XML 文档将变量名作为字符串传递;我想获得价值。

像这样的东西:

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

//get which variable from the XML

string fromXML = "bubblegumB";

string output = getValue(fromXML);

//it should return "banana"
4

2 回答 2

4

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

但是你可以这样做:

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

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

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

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

string output1 = myValues.bublegumB; // "banana"
string output2 = (string)((IDictionary<string, object>)myValues)["bublegumB"]; // "banana"
于 2013-04-24T00:01:18.017 回答
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
}
于 2013-04-24T00:02:11.623 回答