マネージ C# だけでなく、Delphi および C++ プログラムと JavaScript の両方で使用される C# COM dll を作成しています。COM dll には、文字列値を dll に返す関数をアプリケーションが登録するモニター部分が含まれています。私は以前に、関数をパラメーターとして dll に渡すだけの JavaScript 'アプリケーション' に対してこれを行いました。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# からこのメソッドにパラメーターを渡す方法がわかりません。デリゲートを使用してみましたが、デリゲートを呼び出すと、デリゲート (呼び出し名を返すもの) から ToString() メソッドが返されるだけです。私が試したことは他に何もありません。
だから私は2つの質問があります:
- C# からこの dll にメソッド パラメータを渡して、必要なときに dll が上記の方法でメソッドを呼び出せるようにするにはどうすればよいですか?
- これは本当に IDispatch ですか、それとも javascript で機能する別の理由がありますか?
前もって感謝します