2

サードパーティ アプリケーション用のプラグインを作成しているときに、アプリケーションの作成者が提供するタイプ ライブラリに、プラグインで使用できるすべてのメソッドが含まれていないという問題に遭遇しました。

VisualBasicを使用し、 Option Strict Onが設定されていない場合、基本的にすべてが機能します。「オン」に設定するとすぐに、遅延バインディングが Strict On では利用できないというエラーが表示されます。

このコードを C# に移植したいのですが、これらのメソッドを機能させる方法がわかりません。

プラグイン システムは、私のプラグインが Application オブジェクトを取得し、後で呼び出す方法で機能します Application.IntermediateObject.InterestingMethod(Variable)

C# では、 IntermediateObjectに "InterestingMethod" の定義が含まれていないため、これはコンパイルされません (Windows SDK COM オブジェクト ブラウザーを使用して確認することもできます)。これまでの私の最善の推測は、次のようなものでそれに到達できるはずだということでした:

IntermediateObject.GetType().GetMethod("InterestingMethod");

しかし、その結果は単に「null」です。

ここで何か間違ったことをしていますか?または、これは行き止まりであり、VB に固執する必要がありますか?

PS : 私には、アプリケーションの作成者にタイプ ライブラリを修正させる権限がないため、それはオプションではありません。

4

1 に答える 1

4

dynamicここでキーワードを使用してみることができます。

dynamic tmp = Application.IntermediateObject;
tmp.InterestingMethod(variable);

これはうまくいくかもしれませんが、リフレクションが機能していないように見えるので確信が持てません。

于 2013-05-29T10:18:12.623 に答える