[英]can't access indexer of a property in VB.Net
我有一个属性Cmd定义如下
Private _cmd As ADODB.Command
Public ReadOnly Property Cmd() As ADODB.Command
Get
Cmd = _cmd
End Get
End Property
但是,当我尝试像这样使用它时:
y = x.Cmd("abc")
我得到:
重载解析失败,因为没有可访问的“参数”接受此数量的参数。
但是,这可行:
y = (x.Cmd)("abc")
我可以更改我的属性定义,以便用户不需要parens?
除了binarycoder的解决方案之外,我建议您使用另一种解决方案。 如果要以这种方式使用代码:
y = x.Cmd("abc")
您可以将Cmd属性更改为如下所示:
Public ReadOnly Property Cmd(ByVal parameterName As String) As ADODB.Command
Get
Return _cmd.Parameters(parameterName)
End Get
End Property
希望能帮助到你!
我可以更改我的属性定义,以便用户不需要parens?
否。问题的症结在于默认属性( Parameters
)不是索引属性,而是返回ADODB.Parameters
对象。 尽管ADODB.Parameters
具有索引的Item
属性,但它太深了一层。 由于您无法更改ADODB
,因此可以考虑添加一个辅助方法。 然后,您可以使用此方法而不是您的属性。
Public Function CmdParameter(ByVal parameterName As String) As ADODB.Parameter
Return Cmd.Parameters(parameterName)
End Function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.