动态方法调用失败,带有参数

时间:2011-03-22 12:54:01

标签: c# dll dynamic

我正在使用动态方法调用来访问动态加载的dll中的方法。

我在做:

            dynamic classInstance = Activator.CreateInstance(cmd.Type);

            classInstance.AddString();  //This line works
            classInstance.AddString(cmd);    //this line does not work

dll中的方法是:

    public CustomCommandTest1()
    {

    }
    public void AddString(Command cmd, ExposedVariables exv)
    {
        exv.ChopResults += "Add string Command";
    }
    public void AddString(ExposedVariables exv)
    {
        exv.ChopResults += "Add string Command";
    }
    public void AddString()
    {
        string ChopResults = "Add string Command";
    }

我可以访问(调用)所有没有参数的方法,但是那些确实给我一个RuntimeBindingInternalCompilerException的方法。试图解决这个问题的例外中没有可用的信息。

我之前已经完成了这项工作。我不知道我在做什么不同。

此处的进一步发现表明它与复杂的变量类型有关。简单的内置变量类型有效。然而,复杂变量的定义没有区别,因为我在公共文件中引用了定义。

3 个答案:

答案 0 :(得分:2)

AddString(cmd)只有在cmd 实际 ExposedVariables的实例时才有效。只有

没有过载
public void AddString(Command cmd)

这就是你期待的样子。

这与复杂的变量类型无关 - 它与你试图调用一个不存在的方法有关。你提到给我们的那些超载你期望被称为过载?

答案 1 :(得分:0)

尝试

 ExposedVariables exv = new ExposedVariables();
 classInstance.AddString(cmd, exv);

因为您似乎没有只需要cmd的重载。

答案 2 :(得分:0)

如果示例中的cmd变量是对Command实例的引用而不是ExposedVariables实例,则调用是错误的。您没有仅AddString的{​​{1}}重载。