无法访问VB.Net中属性的索引器

时间:2010-02-25 23:00:02

标签: 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吗?

2 个答案:

答案 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