Wie deklariert man eine standardmäßig indizierte Eigenschaft in VB.NET, so dass sie von VBScript aus aufrufbar ist?
Ich habe dies versucht mit
<DispId(0)> _
Public ReadOnly Property Item(ByVal idx As Integer) As ...
aber VBScript gibt die Fehlermeldung
Falsche Anzahl von Argumenten oder ungültige Eigenschaftszuweisung Fehlercode 800A01C2
Dieser Fehler tritt nicht auf, wenn ich eine normale Eigenschaft (nicht indiziert) von VB.NET freilege.
Hier ist ein Beispiel:
Klasse1.vb:
Public Class Class1
Public ReadOnly Property Dogs() As Dogs
Get
Return New Dogs()
End Get
End Property
End Class
Dogs.vb:
Imports System.Runtime.InteropServices
Public Class Dogs
<DispId(0)> _
Public ReadOnly Property Item(ByVal idx As Integer) As Dog
Get
Return New Dog
End Get
End Property
End Class
Dog.vb:
Public Class Dog
Public ReadOnly Property Name() As String
Get
Return "Fido"
End Get
End Property
End Class
VBScript:
Set obj = CreateObject("FmuComTest.Class1")
MsgBox obj.Dogs.Item(0).Name ' this works
MsgBox obj.Dogs(0).Name ' error message
Der Zugriff auf die standardmäßig indizierte Eigenschaft Dogs.Item(idx) führt zu einer Fehlermeldung.