3
我有一个类库暴露于COM是这样的:的ParamArray不工作与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 /代码库进行注册。所有的方法和属性似乎在VBA/VB6中都能正常工作,但是当我尝试使用ParamArray访问Method时,它不会事件编译。我得到的错误:
Compile error:
Function or interface marked as restricted, or the function uses an Automation type not suppport in Visual Basic.
什么我需要做的,以正确曝光此方法,以便这样?:
SomeClass.SomeMethod 1, 2, 3
再次感谢你们Obi Wan :) VB6/VBA中有参数文件,但它们是byref变量数组而不是byval对象数组。这是不兼容性的原因吗? – Oorang 2010-07-28 17:47:15
如果这是真的,似乎很遗憾。您可以在VB6中创建接受参数数组的COM组件,但它们必须是变体数组,但是这种'Public Sub SomeMethod(ParamArray values()As Variant)''。你会希望COM互操作的东西能够将VB.Net ParamArray映射到VB6可以调用的东西。 http://msdn.microsoft.com/en-us/library/aa266305(v=VS.60).aspx – MarkJ 2010-07-28 17:53:02
Variant ==对象。我不清楚这一点,不再有VB6文档。要开始一台旧机器,大约一年前,我记得我的膝盖在敲击。后来。 – 2010-07-28 17:53:28