我正在与一个第三方库进行连接,这个第三方库连接到一个旧的数据库系统。有一种方法 - 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