アセンブリをロードし、「遅延バインディング」を使用してメソッドを呼び出す既存のネイティブアプリケーション(ほとんどの場合VBで記述されている)を使用しています。そのソースコードにアクセスすることはできません。
このインターフェイスをC#で実装し、ネイティブアプリケーションにC#アセンブリを呼び出させます。
これは可能ですか?
これは、メソッド名とメソッドシグネチャを一致させて機能させる以外に、私たちがしなければならないことですか?
アセンブリをロードし、「遅延バインディング」を使用してメソッドを呼び出す既存のネイティブアプリケーション(ほとんどの場合VBで記述されている)を使用しています。そのソースコードにアクセスすることはできません。
このインターフェイスをC#で実装し、ネイティブアプリケーションにC#アセンブリを呼び出させます。
これは可能ですか?
これは、メソッド名とメソッドシグネチャを一致させて機能させる以外に、私たちがしなければならないことですか?
VB6 から .NET コードを呼び出そうとする場合、最もクリーンな方法は、C# コードを VB6 コードへの COM オブジェクトとして表示することです。そのため、C# コードを次のようにマークComVisible
し、次のように見えるようにする必要があります。既存の COM インターフェイス。
更新: 開始するための記事を次に示します。
これを機能させるために必要な手順は次のとおりです。
[ComVisible(true)]
し、必ず一意の[Guid]
属性を与えてくださいProgId
通常は であるクラスにあなたを一致させますが、クラスMyNamespace.MyClass
に属性を追加してこれをオーバーライドすることもできます[DispId]
呼び出される各メソッドに適切な属性を設定しますregasm.exe
するそして出来上がり!ネイティブ コードは、「遅延バインディング」を介して C# を呼び出すことができます。もちろん、ネイティブ アプリケーションにアセンブリのロード方法を認識させるために、いくつかのレジストリ キーをセットアップする必要がありましたが、すべてが機能しています。