Есть ли способ использовать аргументы по умолчанию, которые являются результатом вызова функции в VB.NET? - PullRequest
0 голосов
/ 15 июля 2010

У меня есть целый ряд функций доступа к базе данных, которые предполагают конкретную строку подключения. В моем заявлении я звоню

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 Ответ

1 голос
/ 15 июля 2010

Можете ли вы сделать значение по умолчанию пустой строкой?Затем, в ваших функциях, если переменная useThisString пуста, тогда используйте default, иначе используйте ту, которую вы передали?Немного грязнее, но едва.

...