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 должен передавать массив вариантов. Неприятно, подумайте над редизайном вашего класса.