2010-11-24 113 views

回答

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") 
相关问题