ParamArray не работает с COM

У меня есть библиотека классов, которая подвергается воздействию 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 ответ

Решение

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

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

Другие вопросы по тегам