2010-07-15 21 views
0

J'ai tout un tas de fonctions d'accès à la base de données qui supposent une chaîne de connexion particulière. Au sein de mon application, j'appelerExiste-t-il un moyen d'utiliser les arguments par défaut qui sont le résultat d'un appel de fonction dans VB.NET?

myList = DB_MyTable.GetTableItems() 

et dans GetTableItems() je quelque chose comme

Dim connection As SqlConnection = MyDB.GetConnection 

Ainsi, la chaîne de connexion est en un seul endroit dans le code, et j'appeler une méthode pour l'obtenir. Ce que je rencontre actuellement, c'est que je veux réutiliser les mêmes fonctions de base de données, mais avec une chaîne de connexion différente. Je peux réécrire toutes les fonctions comme DB_MyTable.GetTableItems() facilement parce qu'elles sont générées à partir d'un script, mais dans le code de l'application principale, je dois m'occuper de chaque appel de fonction qui doit maintenant savoir quelle chaîne de connexion je veux utiliser.

J'ai essayé de changer les arguments à GetTableItems() comme ceci:

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

dans l'espoir de pouvoir passer en, par défaut, la chaîne j'utilise déjà dans la plupart du code, mais je suis un erreur indiquant que la valeur par défaut devait être une expression constante. Cela signifierait pepper une chaîne de connexion spécifique partout, ce que je ne veux pas faire.

Existe-t-il un moyen d'accomplir ce que je cherche, ou ai-je besoin de faire de la chaîne de connexion un argument obligatoire et de changer tous les appels de mon application pour correspondre à la nouvelle signature?

Merci comme toujours!

Répondre

1

Pouvez-vous faire de votre valeur par défaut une chaîne vide? Ensuite, dans vos fonctions, si la variable useThisString est vide, utilisez default, sinon utilisez celle que vous avez transmise? Un peu plus sale, mais juste à peine.

+0

Cela m'est vraiment venu à l'esprit! Peut-être que je m'en suis tenu au départ parce que chaque appel aurait cette vérification au début, et il pourrait être un frein de performance. Mais cela me sauverait la plupart du travail de modernisation du code existant. – John

+0

J'ai fini par faire ça, et ça marche bien. Merci! – John