既存の 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 でパブリック文字列フィールド (コードには表示されていません) を設定するときに注意すべき点はありますか?
私はこのコードの最初の作成者ではないことに注意してください。これはレガシー システムからのものであり、移行を行っているだけです。