我有一個方法,如下圖所示...如何使用反射來調用了一個字符串數組作爲參數,在C#中的方法
public bool MakeRequest(string[] args)
{
try
{
sXmlRequest = args[0];
sResponse = "";
Console.WriteLine(sXmlRequest);
sw.Write(sXmlRequest);
sw.Flush();
sResponse = sr.ReadToEnd();
return true;
}
catch (Exception e)
{
sResponse = e.Message;
return false;
}
}
我必須調用使用反射這種方法,因爲路整個框架已經建立。
這裏是我使用叫它
string[] innerargs = {"Dummy Args"};
string pAssembly = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\TCPConnector.dll";
Assembly assemblyInstance = Assembly.LoadFrom(pAssembly);
Type tConnector = assemblyInstance.GetType("Fit.TcpConnector");
Object oLateBound = assemblyInstance.CreateInstance(tConnector.FullName);
result = tConnector.InvokeMember("MakeRequest", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Instance, null, oLateBound, innerargs);
這回我的代碼MissingMethodException說Fit.TcpConnector.MakeRequest沒有找到方法。
但是,如果我改變makeRequest的簽名,以
public bool MakeRequest(string args)
,而不是
public bool MakeRequest(string[] args)
那麼,這是工作。在調用以數組爲參數的函數時,任何人都可以指向正確的方向嗎?
你爲什麼使用匈牙利符號?這不是很有用,因爲編譯器已經檢查了類型。 – svick 2012-03-07 15:55:28
我一直在想同一個。可能是太多的vbscripting讓我跟着它。但是,現在我感覺我不應該這樣做。你的問題激勵我重新考慮離開這個符號。 – Buddha 2012-03-07 16:03:16