Ошибка автоматизации в VB 6.0 из класса C #
-
06-07-2019 - |
Вопрос
Я создал библиотеку классов C # и использую ее через приложение VB 6.0. Но когда я пытаюсь вызвать любой метод (который возвращает строку), это выдает ошибку автоматизации. В противном случае класс C # работает нормально.
Есть идеи почему?
Решение
Как говорит fbinder, вы должны строго подписать свою сборку и использовать некоторые атрибуты. Атрибуты, которые мы используем (успешно):
[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();
}
Другие советы
Вы должны строго подписать свою библиотеку классов, зарегистрировать ее с помощью regasm и поставить ее перед определением класса:
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("Class GUID")]
Кроме того, вы должны определить интерфейс для предоставления желаемых методов. Интерфейс должен иметь атрибуты:
[Guid("Interface GUID")]
[ComVisible(true)]
Не связан с StackOverflow