VB.NET相当于VB6属性Item.VB_UserMemId = 0
发布时间:2020-12-17 00:23:02 所属栏目:大数据 来源:网络整理
导读:我已经从VB6升级到VB.NET,通过COM在Excel中使用. 在VB6中,我有一个在MyScalars类中定义的属性,如下所示: Public Property Get Item(vntIndexKey As Variant) As MyScalarAttribute Item.VB_UserMemId = 0 Set Item = mCol(vntIndexKey) ...End Property 这
我已经从VB6升级到VB.NET,通过COM在Excel中使用.
在VB6中,我有一个在MyScalars类中定义的属性,如下所示: Public Property Get Item(vntIndexKey As Variant) As MyScalar Attribute Item.VB_UserMemId = 0 Set Item = mCol(vntIndexKey) ... End Property 这似乎使得在Excel VBA中,我可以访问此属性而不指定它(所以像默认属性): Dim oOut As Object Set oOut = MyScalars(Range("E10").Value) VB.NET中有一个等效的属性吗?我尝试了以下但它在VBA中出错: Default Public ReadOnly Property Item(ByVal vntIndexKey As String) As MyScalar Get If mCol.ContainsKey(vntIndexKey) Then Item = mCol.Item(vntIndexKey) End If ... End Property
戈维特的答复是正确的.
COM IDispatch接口的所有成员都自动标记DISPID值, 从.NET转换为COM时.此自动过程的唯一例外是值0,它是为类的默认成员保留的.如果不设置dispid,则移植到COM时.NET类的默认成员是:: ToString方法. 在你的例子中: < DispId(0) > _ Public ReadOnly Property Item(ByVal vntIndexKey As String) As MyScalar End Property (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |