我正在尝试在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