2016-03-03 53 views
0

现在,我可以通过执行以下操作在每个方法中调用它,从而在我的类中建立连接。构造函数中的连接字符串

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 

什么是最好的办法呢?提前致谢。

回答

1

你应该传递的ConnectionString在全局变量可以存储在您的所有类方法

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 
+0

正是我在找的东西 – Slae

1

与第一个选项一起,将连接字符串放在构造函数中。你不想让你的班级直接依靠<appSettings>

你的类的接口应该指出它的依赖关系。当你把连接字符串放在构造函数中时,类会说:“嘿,我需要一个连接字符串!”

如果类调用<appSettings>,那么该类的用户无法知道该类期望在那里找到连接字符串,除非它们打开您的代码并阅读它。如果他们不知道连接字符串属于那里,那么他们将得到一个空引用异常,而无需解释。

这提出了一个问题 - 无论什么阶级创建类,哪里获取连接字符串,以便它可以将它传递给构造函数?依赖注入是答案。它使您能够通过“接线”的方式编写类,以便将正确的参数传递给构造函数。

相关问题