Есть ли способ заставить приложение VB 6 вызывать сборку .NET? - PullRequest
1 голос
/ 24 ноября 2010

У меня проблемы с переводом кода C # в VB 6 (пока не делал этого).Есть ли решение, в котором я могу кодировать его в .NET и затем вместо этого вызывать функцию VB6?

Ответы [ 2 ]

5 голосов
/ 24 ноября 2010

Да, вы можете представить управляемую сборку как COM-объект, используя утилиту regasm.exe . Чтобы классы были видны, сборка или отдельные классы должны быть помечены атрибутом [ComVisible(true)]. После того, как сборка будет представлена ​​как COM-объект, вы можете использовать его из VB6, как и любой стандартный COM-объект.

3 голосов
/ 24 ноября 2010

Чтобы представить ваш метод .NET для COM, вам нужно создать интерфейс:

[Guid("CF4CDE18-8EBD-4e6a-94B4-6D5BC0D7F5DE")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
[ComVisible(true)]
public interface IFoo {

    [DispId(1)]
    string MyMethod(string value);
}

Ваш класс будет производным от интерфейса:

[Guid("7EBD9126-334C-4893-B832-706E7F92B525")]
[ClassInterface(ClassInterfaceType.None)]
[ComVisible(true)]
[ProgId("MyNamespace.Foo")]
public class Foo: IFoo {

    public string MyMethod(string value){
        return somestring;
    }
}

Из VB6,Ваш звонок будет выглядеть примерно так:

Dim oFoo as New Foo
dim sReturn as string

sReturn = oFoo.MyMethod("someValue")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...