Вопрос

Я создал библиотеку классов 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)]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top