所以我正在寻找一种从 dll 外部调用应用程序中的方法的方法。(见下面的例子)这是我正在尝试的,但是它a)不工作,b)如果它工作我觉得调用DynamicInvoke会非常缓慢。
首先,如果我确实想这样做,我该如何处理返回类型,因为目前这会出错,说 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!";
}
}