现在我可以通过执行以下操作在每个方法中调用它来在我的类中建立连接。
Dim sConnectionString As String = ConfigurationManager.AppSettings("Blah")
'Establish connection with db
Dim cnSqlConnection1 As New SqlConnection(sConnectionString)
唯一的问题是我必须在每种方法中调用它。我被告知最好为类nad创建一个构造函数,并将其使用的连接字符串传递给构造函数。
这是我的尝试,但似乎无法弄清楚,因为我仍然无法在方法中达到它。
Public Sub New(ByVal sConnectionString As String)
sConnectionString = ConfigurationManager.AppSettings("Blah")
End Sub
最好的方法是什么?提前谢谢。
答案 0 :(得分:1)
您应该将传递的连接字符串存储在所有类方法中可用的全局变量
中Public Clas MyClass
Private String gs_conString
Public Sub New(ByVal sConnectionString As String)
gs_conString = sConnectionString
End Sub
Public Sub AMethod()
'Establish connection with db
Dim cnSqlConnection1 As New SqlConnection(gs_conString)
.....
End Sub
.....
End Class
当然这意味着每次创建此类的实例时,都需要将连接字符串传递给构造函数
Dim cl As MyClass = new MyClass(ConfigurationManager.AppSettings("Blah"))
因此,每次创建实例
时,最好使用构造函数自动提取连接字符串Private String gs_conString
Public Sub New()
gs_conString = ConfigurationManager.AppSettings("Blah")
End Sub
答案 1 :(得分:1)
使用第一个选项,将连接字符串放在构造函数中。您不希望自己的课程直接依赖<appSettings>
。
您的班级界面应指明它具有哪些依赖关系。当你把连接字符串放在构造函数中时,该类说,&#34;嘿,我需要一个连接字符串!&#34;
如果类调用<appSettings>
,那么该类的用户无法知道该类希望在那里找到连接字符串,除非他们打开您的代码并阅读它。如果他们不知道连接字符串属于那里,那么他们将得到一个空引用异常而无需解释。
这提出了一个问题 - 无论创建类的类,它在哪里获取连接字符串以便它可以将它传递给构造函数?依赖注入就是答案。它使您能够以这样的方式编写类,然后将其连接起来&#34;以便将正确的参数传递给构造函数。