我无法将C#代码翻译成VB 6(在looooong中没有这样做)。有没有一种解决方案,我可以在.NET中编写代码,然后让VB6调用该函数?有没有办法让VB 6应用程序调用.NET程序集?
1
A
回答
5
是的,您可以使用regasm.exe实用程序将您的托管程序集作为COM对象公开。为了使这些类可见,组件或各个类需要使用[ComVisible(true)]
属性进行标记。一旦该组件暴露为COM对象,就可以像使用任何标准COM对象一样从VB6中使用它。
3
暴露你的.NET方法COM,你需要创建一个接口:
[Guid("CF4CDE18-8EBD-4e6a-94B4-6D5BC0D7F5DE")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
[ComVisible(true)]
public interface IFoo {
[DispId(1)]
string MyMethod(string value);
}
你的类会从接口派生:
[Guid("7EBD9126-334C-4893-B832-706E7F92B525")]
[ClassInterface(ClassInterfaceType.None)]
[ComVisible(true)]
[ProgId("MyNamespace.Foo")]
public class Foo: IFoo {
public string MyMethod(string value){
return somestring;
}
}
从VB6,您的通话将看起来像这样:
Dim oFoo as New Foo
dim sReturn as string
sReturn = oFoo.MyMethod("someValue")