2010-11-24 14 views

Répondre

5

Oui, vous pouvez exposer votre assembly géré en tant qu'objet COM à l'aide de l'utilitaire regasm.exe. Pour que les classes soient visibles, l'assembly ou les classes individuelles doivent être marquées avec l'attribut [ComVisible(true)]. Une fois l'assembly exposé en tant qu'objet COM, vous pouvez le consommer à partir de VB6 comme vous le feriez avec n'importe quel objet COM standard.

3

Pour exposer votre méthode .NET COM, vous devez créer une interface:

[Guid("CF4CDE18-8EBD-4e6a-94B4-6D5BC0D7F5DE")] 
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] 
[ComVisible(true)] 
public interface IFoo { 

    [DispId(1)] 
    string MyMethod(string value); 
} 

Votre classe dérivera de l'interface:

[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; 
    } 
} 

De VB6, votre appel quelque chose comme:

Dim oFoo as New Foo 
dim sReturn as string 

sReturn = oFoo.MyMethod("someValue")