1

アセンブリをロードし、「遅延バインディング」を使用してメソッドを呼び出す既存のネイティブアプリケーション(ほとんどの場合VBで記述されている)を使用しています。そのソースコードにアクセスすることはできません。

このインターフェイスをC#で実装し、ネイティブアプリケーションにC#アセンブリを呼び出させます。

これは可能ですか?

これは、メソッド名とメソッドシグネチャを一致させて機能させる以外に、私たちがしなければならないことですか?

4

2 に答える 2

2

VB6 から .NET コードを呼び出そうとする場合、最もクリーンな方法は、C# コードを VB6 コードへの COM オブジェクトとして表示することです。そのため、C# コードを次のようにマークComVisibleし、次のように見えるようにする必要があります。既存の COM インターフェイス。

更新: 開始するための記事を次に示します。

于 2009-08-14T16:23:28.433 に答える
1

これを機能させるために必要な手順は次のとおりです。

  1. あなたのクラスをマーク[ComVisible(true)]し、必ず一意の[Guid]属性を与えてください
  2. ProgId通常は であるクラスにあなたを一致させますが、クラスMyNamespace.MyClassに属性を追加してこれをオーバーライドすることもできます
  3. [DispId]呼び出される各メソッドに適切な属性を設定します
  4. アセンブリをコンパイルしてアセンブリで実行regasm.exeする

そして出来上がり!ネイティブ コードは、「遅延バインディング」を介して C# を呼び出すことができます。もちろん、ネイティブ アプリケーションにアセンブリのロード方法を認識させるために、いくつかのレジストリ キーをセットアップする必要がありましたが、すべてが機能しています。

于 2009-08-14T22:42:10.993 に答える