CreateDispatch呼び出しによって呼び出されたVB6 DLLを同等のC#に置き換える

c# vb6-migration visual-c++
CreateDispatch呼び出しによって呼び出されたVB6 DLLを同等のC#に置き換える

既存のVisual C ++アプリケーションは次の呼び出しを行います。

BOOL bRet = pMyClass.CreateDispatch("BlahBlah.MyClass");
if ( !bRet )
{
    // Error handling snipped
}
else
{
    pMyClass.MyMethod();
    pMyClass.ReleaseDispatch();
}

pMyClassは、明らかにClassWizardによって自動生成されたクラスであり、COleDispatchDriverを継承しています。

それが参照する実際のDLLはVB6であり、これは一般にVBから遠ざかる努力の一環としてC#に移行されています。

私の質問は… C#アセンブリが元のVB6モジュールと同じように機能することを確認するために私がする必要がある特別なことはありますか? 現在、C#は次のようになっています。

[ComVisible(true)]
[ProgId("BlahBlah.MyClass")]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class MyClass
{
    ...

    public void MyMethod()
    {
        ...
    }
}

これで十分ですか? MyClassでパブリック文字列フィールド(コードには表示されていません)を設定する際に注意すべき点がありますか?

私はこのコードの元の作成者ではないことに注意してください-それはレガシーシステムからのものであり、私は移行を行っているだけです。

  2  0


ベストアンサー

CreateDispatch呼び出しは、遅延バインディングを使用してCOMサーバーと通信します。 ClassInterfaceType.AutoDispatch。 AutoDualの使用には問題ありませんが、これには遅延バインディングのサポートも含まれます。 いつの日かもっと速くできるという大きな利点があります。 遅延バインディングは安くはありません。

2


タイトルとURLをコピーしました