Error de automatización en VB 6.0 de una clase C #
-
06-07-2019 - |
Pregunta
He creado una biblioteca de clase C # y la estoy usando a través de una aplicación VB 6.0. Pero cuando intento llamar a cualquier método (que devuelve una cadena) me da un error de automatización. De lo contrario, la clase C # funciona bien.
¿Alguna idea de por qué?
Solución
Como dice fbinder, debe firmar con firmeza su ensamblaje y usar algunos atributos. Los atributos que utilizamos (con éxito) son:
[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();
}
Otros consejos
Debe firmar con firmeza su biblioteca de clases, registrarla con regasm y poner esto antes de la definición de su clase:
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("Class GUID")]
Además, debe definir una interfaz para exponer los métodos deseados. La interfaz debe tener los atributos:
[Guid("Interface GUID")]
[ComVisible(true)]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow