我有一個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