字符串转换为变量名 [英] Convert string to variable name
本文介绍了字符串转换为变量名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个XML文件,我有一个节点,我读了所有子节点。 。在childNode匹配到一个变量我有这个childNode的值来设置的名称
在循环,我想设置:
- myvar1到MyValue1
- myvar2到MyValue2
C#代码:
保护串myvar1;
保护串myvar2;
XML的内容是这样的:
<&参数GT;
< myvar1> MyValue1< / myvar1>
< myvar2> MyValue2< / myvar2>
< /参数>
C#设置变量:
的foreach(在xmlParamInstallation.SelectNodes(VAR项参数)[0] .ChildNodes)
{
??????
}
任何想法?
谢谢,
更新1:
在回路中的价值场是空的所有时间
公共类ParametersTest
{
公共字符串myvar1 {搞定;组; }
公共字符串myvar2 {搞定;设置;}
}
变种类型= typeof运算(ParametersTest);
的foreach(在xmlParamInstallation.SelectNodes XmlNode的项目(参数)[0] .ChildNodes)
{
VAR字段= type.GetField(item.LocalName);
field.SetValue(场,item.InnerText);
}
解决方案
您可以用做< A HREF =http://msdn.microsoft.com/en-us/library/ms173183%28v=vs.80%29.aspx相对=nofollow>反射:
VAR类型= typeof运算(SomeClass的);
VAR字段= type.GetField(item.Name);
field.SetValue(NULL,item.InnerText);
RE:更新1
VAR参数=新ParametersTest();
变种类型= parameters.GetType();
变种s = @<参数>
< MyVar1> MyValue1< / MyVar1>
< MyVar2> MyValue2< / MyVar2>
< /参数>中;
变种xmlParamInstallation =新的XmlDocument();
xmlParamInstallation.LoadXml(S);
的foreach(在xmlParamInstallation.SelectNodes(XmlNode的项目参数)[0] .ChildNodes)
{
VAR字段= type.GetProperty(item.LocalName );
field.SetValue(参数,item.InnerText,NULL);
}
I have an XML file, I have a node and I read all ChildNodes. The name of the childNode match to a variable I have to set with the value of this childNode.
In the loop, I'd like set :
- myvar1 to MyValue1
- myvar2 to MyValue2
The C# Code :
protected string myvar1;
protected string myvar2;
The XML content look like this :
<parameters>
<myvar1>MyValue1</myvar1>
<myvar2>MyValue2</myvar2>
</parameters>
C# set variables :
foreach (var item in xmlParamInstallation.SelectNodes("parameters")[0].ChildNodes)
{
??????
}
Any idea ?
Thanks,
UPDATE 1: the value "field" in the loop is null all the time.
public class ParametersTest
{
public string myvar1 { get; set; }
public string myvar2 {get; set;}
}
var type = typeof(ParametersTest);
foreach (XmlNode item in xmlParamInstallation.SelectNodes("parameters")[0].ChildNodes)
{
var field = type.GetField(item.LocalName);
field.SetValue(field, item.InnerText);
}
解决方案
You can do it using Reflection:
var type = typeof(SomeClass);
var field = type.GetField(item.Name);
field.SetValue(null, item.InnerText);
RE: UPDATE 1
var parameters = new ParametersTest();
var type = parameters.GetType();
var s = @"<parameters>
<MyVar1>MyValue1</MyVar1>
<MyVar2>MyValue2</MyVar2>
</parameters>";
var xmlParamInstallation = new XmlDocument();
xmlParamInstallation.LoadXml(s);
foreach (XmlNode item in xmlParamInstallation.SelectNodes("parameters")[0].ChildNodes)
{
var field = type.GetProperty(item.LocalName);
field.SetValue(parameters, item.InnerText, null);
}
这篇关于字符串转换为变量名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文