我正在嘗試在dll中加載函數。加載DLL,但只是在調用函數的地方,我得到一個異常訪問dll時發現模糊匹配
曖昧找到匹配
這裏是代碼片段。
Assembly dll = Assembly.LoadFrom(DLLPATH);
if (dll != null)
{
Type Tp = dll.GetType("ABCD.FooClass");
if (Tp != null)
{
Object obj = Activator.CreateInstance(Tp);
if (obj != null)
{
List = (List<String>)obj.GetType().GetMethod("Foo").Invoke(obj, null);
}
else
{
Console.WriteLine("obj is null");
}
}
Console.WriteLine("Type is null");
}
else
Console.WriteLine("Dll is not loaded");
Console.ReadKey();
其中我打電話的方法(即Foo
),不接受任何參數並且它是一個重載方法。那是我去錯的地方還是其他地方?
是否有另一種方法來調用不接受任何參數的方法?我試過解決方案here,但它不工作。
沒有所有LoadLibrary/CreateInstance的示例代碼可能會更清楚地顯示問題 - 請嘗試使用簡化的「FooClass」進行簡單示例並調用Invoke。 (假設你在那裏得到例外)。 – 2013-03-06 08:01:29
您是否多次加載程序集? – Oliver 2013-03-06 08:10:50
@Oliver:我只裝載一次組件。 – 2013-03-06 09:19:39