从上一级获取信息?
我真的不知道如何提出问题,所以请忍受我...从上一级获取信息?
我有3类:服务器,数据库和表。每个类都有一个“名称”属性。我希望它的工作原理是每台服务器可以有多个数据库,每个数据库可以有多个表。所以在Server类中我有这个属性。
Private _databases As List(Of Database)
Public Property Databases() As List(Of Database)
Get
Return _databases
End Get
Set(ByVal value As List(Of Database))
_databases = value
End Set
End Property
而且我在表的Database类中有类似的东西。这现在工作正常,因为我可以做这样的事情来获得服务器中的所有数据库。
For Each db In s.Databases 's being the server object
Debug.Print(db.Name)
Next
我想展开这些类。我想要服务器类来处理所有的连接信息,我希望其他类在其中使用服务器类的连接信息。
例如,我设置一个服务器类和设置连接字符串到服务器。然后,我希望数据库类使用serverclass.connectionstring属性来连接到服务器,并得到所有数据库的列表。但我想保留在数据库类中的代码。我怎样才能做到这一点?
我已经附加了什么我想要做一些代码。
Public Class Server
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Private _databases As List(Of Database)
Public Property Databases() As List(Of Database)
Get
Return _databases
End Get
Set(ByVal value As List(Of Database))
_databases = value
End Set
End Property
End Class
'-----New class
Public Class Database
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Private _tables As List(Of Table)
Public Property Tables() As List(Of Table)
Get
Return _tables
End Get
Set(ByVal value As List(Of Table))
_tables = value
End Set
End Property
'This is where I need help!
Private Sub LoadTables()
dim connectionstring as string = server.connectionstring 'Possible?
'Do database stuff
End Class
感谢您的阅读!
您必须在您的子类的“拥有者”类的引用。
不使用代码(为简便起见),你现在所拥有的
Server
----------
Databases -----> Database
Name ------------
Tables -----> Table
Name --------------
Name
什么你想是这样的:
Server
----------
Databases -----> Database
Name ------------
^ Tables -----> Table
| Name --------------
--------------- Server Name
^ Database
|-------------------|
的Server
财产上的Database
类并在Table
类Database
属性意在以拥有它们各自的实例的引用。
施工时将其传递的服务器到数据库,并设置一个字段。这是一个非常基本的形式dependency injection。
+1的链接,它叫什么。我一直在想要了解更多! – 2010-06-04 18:06:39
我想让personnaly让数据库知道存储它的服务器,这样数据库就能知道连接到哪个服务器的位置。
这样做看起来是这样的:
public class Database {
public Database(Server server) {
Server = server;
}
public Server Server { get; private set; }
}
代码+1。它在我的路上帮助了我。 – 2010-06-04 18:06:11
谢谢你让我知道我给你带来了一些东西。这是善良的。 =) – 2010-06-07 02:30:43
谢谢,这是我想要做的。 – 2010-06-04 18:05:52