我的属性 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吗?
答案 0 :(得分:3)
除了二进制编码器的解决方案,我建议你另外一个。如果您想以这种方式使用您的代码:
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
希望它有所帮助!
答案 1 :(得分:1)
我可以更改我的属性定义吗? 用户不需要 括号?
没有。问题的关键在于默认属性(Parameters
)不是索引属性,而是返回ADODB.Parameters
对象。虽然ADODB.Parameters
具有索引Item
属性,但它太深了一级。由于您无法更改ADODB
,因此可以考虑添加辅助方法。然后,您可以使用此方法代替您的属性。
Public Function CmdParameter(ByVal parameterName As String) As ADODB.Parameter
Return Cmd.Parameters(parameterName)
End Function