Erreur d'automatisation dans VB 6.0 à partir d'une classe C #
-
06-07-2019 - |
Question
J'ai créé une bibliothèque de classes C # et je l'utilise via une application VB 6.0. Mais lorsque j'essaie d'appeler une méthode (qui retourne une chaîne), cela me donne une erreur d'automatisation. La classe C # fonctionne bien sinon.
Avez-vous une idée du pourquoi?
La solution
Comme le dit fbinder, vous devez signer votre assemblage avec force et utiliser certains attributs. Les attributs que nous utilisons (avec succès) sont:
[ComVisible( true )]
[ClassInterface( ClassInterfaceType.None )]
[Guid( "00000000-0000-0000-0000-000000000000" )]
[ComDefaultInterface( typeof( IExposedClass ) )]
public class ExposedClass : IExposedClass
{
//need a parameterless constructor - could use the default
public ExposedClass() { }
public string GetThing()
{
return "blah";
}
}
[ComVisible( true )]
[Guid( "00000000-0000-0000-0000-000000000000" )]
[InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
public interface IExposedClass
{
string GetThing();
}
Autres conseils
Vous devriez bien signer votre bibliothèque de classes, enregistrez-la avec regasm et mettez-la devant votre définition de classe:
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("Class GUID")]
Vous devez également définir une interface pour exposer les méthodes souhaitées. L’interface doit avoir les attributs suivants:
[Guid("Interface GUID")]
[ComVisible(true)]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow