现有的 Visual C++ 应用程序进行以下调用;
BOOL bRet = pMyClass.CreateDispatch("BlahBlah.MyClass");
if ( !bRet )
{
// Error handling snipped
}
else
{
pMyClass.MyMethod();
pMyClass.ReleaseDispatch();
}
pMyClass 是一个显然由 ClassWizard 自动生成的类,它继承自 COleDispatchDriver。
它所引用的实际 DLL 是 VB6 的,它正在迁移到 C#,作为总体上远离 VB 的努力的一部分。
我的问题是……我需要做些什么来确保 C# 程序集的工作方式与原始 VB6 模块的工作方式相同吗?目前,C# 看起来像这样;
[ComVisible(true)]
[ProgId("BlahBlah.MyClass")]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class MyClass
{
...
public void MyMethod()
{
...
}
}
这足够了吗?在 MyClass 上设置公共字符串字段(代码中未显示)时,是否有任何需要注意的问题?
请注意,我不是此代码的原始作者 - 它来自遗留系统,我只是在进行迁移。