我有一个名为 Methods.xml 的 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()); 线。
提前致谢。
已编辑
错误消息是:对象引用未设置为对象的实例。