Errore di automazione in VB 6.0 da una classe C #
-
06-07-2019 - |
Domanda
Ho creato una libreria di classi C # e la sto usando tramite un'applicazione VB 6.0. Ma quando provo a chiamare qualsiasi metodo (che restituisce una stringa) mi dà un errore di automazione. In caso contrario, la classe C # funziona correttamente.
Qualche idea sul perché?
Soluzione
Come dice fbinder, dovresti firmare con forza il tuo assembly e usare alcuni attributi. Gli attributi che utilizziamo (con successo) sono:
[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();
}
Altri suggerimenti
Dovresti firmare con forza la tua libreria di classi, registrarla con regasm e metterla prima della definizione della tua classe:
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("Class GUID")]
Inoltre, è necessario definire un'interfaccia per esporre i metodi desiderati. L'interfaccia dovrebbe avere gli attributi:
[Guid("Interface GUID")]
[ComVisible(true)]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow