Erro de automatização no VB 6.0 a partir de uma classe C #
-
06-07-2019 - |
Pergunta
Eu criei uma biblioteca de classes C # e eu estou usando-o através de um aplicativo VB 6.0. Mas quando eu tento chamar qualquer método (que retorna um string) dá-me um erro de automação. A classe C # está funcionando bem o contrário.
Qualquer ideia porquê?
Solução
Como fbinder diz, você deve forte assinar seu conjunto, e usar alguns atributos. Os atributos que nós usamos (com sucesso) são:
[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();
}
Outras dicas
Você deve forte assinar o seu biblioteca de classes, registrá-lo com regasm e colocar isso antes de sua definição de classe:
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("Class GUID")]
Além disso, você deve definir uma interface para expor os métodos desejados. A interface deve ter os atributos:
[Guid("Interface GUID")]
[ComVisible(true)]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow