c# – 访问dll时发现模糊匹配
发布时间:2020-12-15 20:00:40 所属栏目:百科 来源:网络整理
导读:我正在尝试在DLL中加载一个函数. dll被加载但只是在调用函数的地方,我得到一个例外 Ambiguous match found 这是代码片段. Assembly dll = Assembly.LoadFrom(DLLPATH);if (dll != null){ Type Tp = dll.GetType("ABCD.FooClass"); if (Tp != null) { Object
我正在尝试在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发布的解决方案,但它无法正常工作. 解决方法
如果有多个具有指定名称的方法,则Type.GetMethod(string methodName)方法会抛出您提到的异常(请参阅
this MSDN topic).因为Foo是一个重载,你说我怀疑在同一个DLL中有多个Foo方法.如果你有例如方法:
IList<string> Foo() IList<string> Foo(object someParameter) 方法GetMethod(string methodName)无法确定您想要哪个.在这种情况下,您应该使用方法GetMethods并自己确定正确的方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |