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

时间:2010-07-15 18:40:31

标签: vb.net refactoring optional optional-arguments

我有一大堆数据库访问函数,它们假设一个特定的连接字符串。在我的申请中,我打电话给

myList = DB_MyTable.GetTableItems()

并且在GetTableItems()内我有类似

的内容
Dim connection As SqlConnection = MyDB.GetConnection

因此连接字符串位于代码中的一个位置,我调用一个方法来获取它。

我现在遇到的是我想重用相同的数据库函数,但使用不同的连接字符串。我可以轻松地重写所有函数,例如DB_MyTable.GetTableItems(),因为它们是从脚本生成的,但在主应用程序代码中,我需要处理现在需要知道我想要的连接字符串的每个函数调用使用。

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

Public Shared Function GetTableItems(Optional ByVal useThisString as String = MyDB.GetConnection) As List(Of MyItems)

希望能够在默认情况下传入我已经在大多数代码中使用的字符串,但是我得到一个错误,说默认值必须是一个常量表达式。这意味着到处都是特定的连接字符串,我不想这样做。

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

一如既往地谢谢!

1 个答案:

答案 0 :(得分:1)

您可以将默认值设为空字符串吗?然后,在你的函数中,如果useThisString变量为空,则使用默认值,否则使用你传入的那个?一个更小的肮脏,但几乎没有。