我使用loadfrom加載一個dll並迭代通過這些方法來找到匹配簽名的。當我找到它的時候,我想把它作爲一個委託,所以我可以稍後調用它。這是我正在做的...試圖創建一個動態的代理
foreach (MethodInfo method in methodInfos)
{
if (method.GetParameters().Length == 2)
{
ParameterInfo[] parameters = method.GetParameters();
if (parameters[0].ParameterType.Name == "Command"
&& parameters[1].ParameterType.Name == "ExposedVariables")
{
aoc.methodinfo = method;
Command.delCmdMethod del = (Command.delCmdMethod)
Delegate.CreateDelegate(typeof(Command.delCmdMethod)
, null
, method);
}
}
}
問題是 - 代理分配不起作用。我得到一個錯誤綁定到目標方法。
我在網上讀到第二個參數可能是問題,如果方法不是靜態的。我的方法不是靜態的。
任何想法?
我已經閱讀過這篇文章,但並不確定我需要在這裏使用哪個對象。它是命令,因爲那是委託的地方或方法所在的對象? – Jeff 2011-03-21 20:27:35
首先 - 感謝迄今爲止的幫助...我按照你的說法做了, - 保存了程序集和methodinfo,然後嘗試使用上面的確切代碼創建委託,並且得到相同的錯誤。 – Jeff 2011-03-21 21:02:07
您是否嘗試過使用其他程序集?我將創建一個新項目,並創建一個簡單的程序集,將其設置爲一個庫,只有一個類,例如我的例子中使用的兩個簡單方法,它們不會做任何特殊的事情,然後嘗試使用您的代碼。如果它仍然無法正常工作,請嘗試發佈更多的源代碼,我們將盡力找出答案。 – 2011-03-22 15:32:22