所以我正在尋找一種方法來調用外部應用程序中的方法從DLL。 (請參閱下面的示例)這是我正在嘗試但是它是a)不工作和b)如果它工作,我有一種感覺,調用DynamicInvoke將是痛苦的緩慢。從外部DLL調用類中的方法
首先,如果我確實想這樣做,我該如何處理返回類型,因爲目前這會說錯誤,說callthisexternally()有錯誤的返回類型。
有沒有更好的方法來做到這一點?
--- within a a dll ---
public class mydll
{
// etc.. blah blah
public object callfromdll(string commandName, int requiredArgs, Delegate method)
{
// do stuff
// now invoke the method
return method.DynamicInvoke(method.Method.GetParameters().Select(p => p.ParameterType).ToArray());
}
}
-- within an application that's refrancing the above dll --
public someclass
{
// etc.. stuff here
mydll m = new mydll();
m.callfromdll("callthisexternally", 0, new Action(callthisexternally));
// the function to be called externally
public string callthisexternally()
{
// do stuff
return "i was called!";
}
}
你需要爲現在它沒有任何意義,以提供有關'callfromdll'更多的細節你爲什麼做這種方式而不是僅傳遞一個['Func'委託](http://msdn.microsoft.com/en-us/library/bb534960.aspx) –
可能不是整個答案,而是'new Action(callthisexternally)'不起作用因爲'callthisexternally'返回一個值。你應該使用'新功能(callthisexternally)' –
@DStanley刷新,我已經更新了我的評論。 –