C# 从C传递IDispatch参数# 我正在编写一个C托管CODLL,它将被托管C语言以及Delphi和C++程序以及JavaScript一起使用。COM dll包括一个监视器部分,应用程序在其中注册一个函数,该函数应该向dll返回字符串值。我以前为javascript“应用程序”做过这项工作,您只需将函数作为参数传递给dll。当dll需要查询javascript“应用程序”时,将运行以下命令: Type t = theScript.GetType(); object ret = t.InvokeMember("", BindingFlags.InvokeMethod, null, theScript, new object[] { });

C# 从C传递IDispatch参数# 我正在编写一个C托管CODLL,它将被托管C语言以及Delphi和C++程序以及JavaScript一起使用。COM dll包括一个监视器部分,应用程序在其中注册一个函数,该函数应该向dll返回字符串值。我以前为javascript“应用程序”做过这项工作,您只需将函数作为参数传递给dll。当dll需要查询javascript“应用程序”时,将运行以下命令: Type t = theScript.GetType(); object ret = t.InvokeMember("", BindingFlags.InvokeMethod, null, theScript, new object[] { });,c#,javascript,.net,com-interop,idispatch,C#,Javascript,.net,Com Interop,Idispatch,“脚本”作为对象存储在C#dll中。据我所知,这是由IDispatch完成的。我现在的理论是,我应该能够对其他语言使用相同的方法。所以我用这个签名制作了一个COM可视方法: void RegisterQuery(object method); 但是,我不知道如何从C#向该方法传递参数。我尝试过使用委托,但调用委托只是从委托(返回calss名称的委托)返回ToString()方法。我试过的其他东西都没有编译过 所以我有两个问题: 如何将方法参数从C#传递给此dll,以便dll能够在需要时以上面指

“脚本”作为对象存储在C#dll中。据我所知,这是由IDispatch完成的。我现在的理论是,我应该能够对其他语言使用相同的方法。所以我用这个签名制作了一个COM可视方法:

void RegisterQuery(object method);
但是,我不知道如何从C#向该方法传递参数。我尝试过使用委托,但调用委托只是从委托(返回calss名称的委托)返回ToString()方法。我试过的其他东西都没有编译过

所以我有两个问题:

  • 如何将方法参数从C#传递给此dll,以便dll能够在需要时以上面指定的方式调用方法
  • 这真的是IDispatch吗?还是它适用于javascript的另一个原因

  • 提前感谢

    事实证明,这非常简单:

    Type t = theScript.GetType();
    object ret = t.InvokeMember(theObject, BindingFlags.InvokeMethod, null, theScriptName, new object[] { });