加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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被加载但只是在调用函数的地方,我得到一个例外

Ambiguous match found

这是代码片段.

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并自己确定正确的方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读