ParamArray не работает с COM - PullRequest
3 голосов
/ 28 июля 2010

У меня есть библиотека классов, которая работает с COM следующим образом:

<ComClass(SomeClass.ClassId, SomeClass.InterfaceId, SomeClass.EventsId)>
Public Class SomeClass

    Public Const ClassId As String = "GUID1"
    Public Const InterfaceId As String = "GUID2"
    Public Const EventsId As String = "GUID3"

    Public Sub SomeMethod(ByVal ParamArray values() As Object)
        ''//Some Code Here    
    End Sub
End Class

Затем я использовал regasm / tlb / codebase для его регистрации.Кажется, что все методы и свойства работают правильно в VBA / VB6, но когда я пытаюсь получить доступ к методу с помощью ParamArray, он не скомпилирует событие.Я получаю сообщение об ошибке:

Ошибка компиляции:

Функция или интерфейс помечены как ограниченные, либо функция использует тип автоматизации, не поддерживаемый в Visual Basic.

Что мне нужно сделать, чтобы правильно раскрыть этот метод, чтобы я мог использовать его следующим образом?:

SomeClass.SomeMethod 1, 2, 3

1 Ответ

3 голосов
/ 28 июля 2010

функция использует тип автоматизации, не поддерживаемый в Visual Basic.

Доллар останавливается на достигнутом, в VB6 нет эквивалента массивов параметров. Удалите ключевое слово ParamArray. Код VB6 должен передавать массив вариантов. Неприятно, подумайте над редизайном своего класса.

...