我真的不知道该如何措辞,所以请忍受...

我有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


我在表的数据库类中也有类似的东西。现在可以正常工作,因为我可以执行以下操作来获取服务器中的所有数据库。

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属性和Database类的Table属性旨在引用每个拥有它们的实例。

关于.net - 从更高阶层获取信息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2958559/

10-09 06:35
查看更多