0

我正在编写一个 C# COM dll,托管 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[] { });

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

void RegisterQuery(object method);

但是我不知道如何从 C# 将参数传递给这个方法。我尝试过使用委托,但调用委托只是从委托(返回 calss 名称的那个)返回 ToString() 方法。我尝试过的其他任何东西都无法编译。

所以我有两个问题:

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

提前致谢

4

1 回答 1

0

事实证明这真的很简单:

Type t = theScript.GetType();
object ret = t.InvokeMember(theObject, BindingFlags.InvokeMethod, null, theScriptName, new object[] { });
于 2013-10-08T13:12:19.960 回答