有没有办法让VB 6应用程序调用.NET程序集?

时间:2010-11-24 07:20:28

标签: .net vb6

我在将C#代码转换为VB 6时遇到了麻烦(在looooong中没有这样做)。有没有一个解决方案,我可以在.NET中编码,然后让VB6调用该函数?

2 个答案:

答案 0 :(得分:5)

是的,您可以使用regasm.exe实用程序将托管程序集公开为COM对象。为了使类可见,需要使用[ComVisible(true)]属性标记程序集或单个类。一旦将程序集公开为COM对象,就可以像使用任何标准COM对象一样从VB6中使用它。

答案 1 :(得分: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")