微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 访问dll时发现模糊匹配

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐