我正在與一個第三方庫進行連接,這個第三方庫連接到一個舊的數據庫系統。有一種方法 - CallProg
,稱爲「存儲過程」(缺乏更好的翻譯 - 人羣中的任何Pick用戶?)。然而,而不是做這樣的事情:將20個過載的子文件合併爲一個文件
Public Sub CallProg(ProgName, ParamArray ProgArgs() As String)
...
End Sub
,甚至這樣的:
Public Sub CallProg(ProgName, Optional Arg1 As String, Optional Arg2 As String ... Optional Arg20 As String)
他們這樣做:
Public Sub CallProg(ProgName)
Public Sub CallProg(ProgName, Arg1 As String)
Public Sub CallProg(ProgName, Arg1 As String, Arg2 As String)
Public Sub CallProg(ProgName, Arg1 As String, Arg2 As String, Arg3 As String)
...
Public Sub CallProg(ProgName, Arg1 As String, ... Arg20 As String)
我正在寫一個抽象類來處理登錄,設置環境等等,所以它可以在許多其他項目中用作通用的「幫手」類。有什麼辦法可以包裝CallProg
的sub,不涉及20個重載?
你描述的'Optional'選項有什麼問題? – Oded 2012-01-31 20:53:03
如果我使用20個可選項做了我的幫手例程,那麼我在'Select Case'語句中仍然必須有20個'Case'行。我無法調用帶有1個「真實」參數和20個空白字符串的底層'CallProg' sub,因爲它會嘗試將所有20個參數傳遞給只需要一個參數的後端程序。 – mounty 2012-01-31 21:02:52
我想你可以使用反射。 – 2012-01-31 21:13:31