我想从名称中获取变量的值。
为了澄清,XML文档将变量名称作为字符串传递;我想得到这个价值。
这样的事情:
string bublegumA = "strawberry";
string bubblegumB = "banana";
//get which variable from the XML
string fromXML = "bubblegumB";
string output = getValue(fromXML);
//it should return "banana"
答案 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
}