我有一个XML文件,其是名称Methods.xml如下调用方法
....
<Method>
<MethodName>foo</MethodName>
<MethodParams>fooString1, fooString2</MethodParams>
</Method>
<Method>
<MethodName>foo</MethodName>
<MethodParams>fooString5, fooString6</MethodParams>
</Method>
....
和我有如下方法
void foo(string param1, string param2)
{
MessageBox.Show(param1 +" : " + param2);
}
我可以得到节点值如下面我想根据xml文件节点的值动态地调用方法
XDocument _XDocument = XDocument.Load(@"Methods.xml");
var _XmlQuery = from _Element in _XDocument.Descendants("Method")
select
new
{
_MethodName = _Element.XPathEvaluate("string(./MethodName)") as string,
_MethodParams = _Element.XPathEvaluate("string(./MethodParams)") as string,
};
foreach (var _Node in _XmlQuery)
{
string _MethodName = _Node._Method.Trim();
MethodInfo _Method = this.GetType().GetMethod(_MethodName);
List<object> _Params = new List<object>();
object[] _XmlParams = _Nodes.MethodParams.Split(',');
foreach (object arg in XmlParams)
{
_Params.Add(arg);
}
_Method.Invoke(this, _Params.ToArray());
}
但是当我调试时,我在这里得到错误_Method.Invoke(this,_Params.ToArray());一行。
在此先感谢。
EDITED
错误消息是:对象没有设置为一个对象的一个实例。
和错误细节是......? – Oded 2013-03-09 13:40:36
@Oded,错误消息是:对象引用未设置为对象的实例。 – Kerberos 2013-03-09 13:45:34
您是否看到此[问题](http://stackoverflow.com/q/1461748/229858)? – 2013-03-09 13:47:00