有没有办法使用VB.NET中函数调用结果的默认参数?

有没有办法使用VB.NET中函数调用结果的默认参数?,vb.net,refactoring,optional,optional-arguments,Vb.net,Refactoring,Optional,Optional Arguments,我有一整套数据库访问函数,它们假设一个特定的连接字符串。在我的应用程序中,我调用 myList = DB_MyTable.GetTableItems() 在GetTableItems()中,我有 Dim connection As SqlConnection = MyDB.GetConnection 所以连接字符串在代码中的一个位置,我调用一个方法来获取它 我现在遇到的是,我希望重用相同的数据库函数,但使用不同的连接字符串。我可以很容易地重写所有函数,比如DB\u MyTable.GetTa

我有一整套数据库访问函数,它们假设一个特定的连接字符串。在我的应用程序中,我调用

myList = DB_MyTable.GetTableItems()
GetTableItems()
中,我有

Dim connection As SqlConnection = MyDB.GetConnection
所以连接字符串在代码中的一个位置,我调用一个方法来获取它

我现在遇到的是,我希望重用相同的数据库函数,但使用不同的连接字符串。我可以很容易地重写所有函数,比如
DB\u MyTable.GetTableItems()
,因为它们是从脚本生成的,但是在主应用程序代码中,我需要处理现在需要知道我要使用什么连接字符串的每个函数调用

我尝试将参数更改为
GetTableItems()
,如下所示:

Public Shared Function GetTableItems(Optional ByVal useThisString as String = MyDB.GetConnection) As List(Of MyItems)
希望能够在默认情况下传入我在大多数代码中已经使用的字符串,但是我得到一个错误,说默认值必须是一个常量表达式。这意味着在任何地方插入一个特定的连接字符串,我不想这样做

有没有办法完成我想要的,或者我需要将连接字符串作为必需的参数,并更改应用程序中的所有调用以匹配新签名


一如既往地谢谢你

可以将默认值设置为空字符串吗?然后,在函数中,如果useThisString变量为空,则使用默认值,否则使用传入的变量?稍微脏一点,但几乎没有。

我确实想到了这一点!也许一开始我会避开它,因为每次调用都会在开始时进行检查,这可能会影响性能。但这将为我节省大部分改造现有代码的工作。