2010-02-25 60 views
0

我有一個屬性Cmd的定義,當我嘗試使用這樣的:無法訪問索引的屬性在VB.Net

y = x.Cmd("abc") 

我得到:

重載解析失敗,因爲沒有可訪問的'參數'接受這個 號碼的論據。

然而,這個工程:

y = (x.Cmd)("abc") 

我可以更改屬性定義,使用戶不需要括號?

+0

該類是否從另一個類繼承?有更多索引器嗎? – 2010-02-25 23:11:38

回答

1

我可以改變我的財產定義,以便 用戶不需要 括號?

不是。問題的關鍵在於默認屬性(Parameters)不是索引屬性,而是返回ADODB.Parameters對象。雖然ADODB.Parameters已被索引Item屬性,但它是一個太深的水平​​。由於您無法更改ADODB,因此您可以考慮添加輔助方法。然後,您可以使用此方法代替您的財產。

Public Function CmdParameter(ByVal parameterName As String) As ADODB.Parameter 
    Return Cmd.Parameters(parameterName) 
End Function 
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 

希望它能幫助!