J'ai du mal à traduire le code C# en VB 6 (je n'ai pas fait ça depuis longtemps). Existe-t-il une solution où je peux le coder dans .NET et ensuite appeler VB6 la fonction à la place?Existe-t-il un moyen de faire en sorte qu'une application VB 6 appelle un assembly .NET?
1
A
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")