4

以下のようなVB.NETで階層構造を作成したい

<Parent>
  <Child1><Child1 />
  <Child2>
     <Subchild1 />
     <Subchild2 />
<Child2 />     
</Parent>

parentchild1child2subchild1およびのエンティティ クラスとコレクション クラスを作成しましたsubchild2。上記の階層ノード構造を生成するには、親コレクション クラスのインスタンスを XML シリアライザー クラスに渡す必要があります。どうすればいいのかわからない。サンプルをください。

エンティティ:

Public class Parent
  Public property FirstName as string
  Public property LastName as string
End Class

Public Class Child1
  Public property Color as string
End class

Public Class Child2
  Public property Color as string
End class

Public Class SubChild1
  Public property FirstName as string
End Class

Public Class SubChild2
  Public property FirstName as string
End Class

Collection Class:
Public class ParentS
  Public Function Add(objrow as Parent, byref skey as object) as Parent 

親クラスに子クラスをプロパティとして追加する必要がありますか? それを行う方法と、上記の構造を作成する方法。助けてください。ありがとう。

4

1 に答える 1

1

次のようにすることができます。

Public Class Node

  Public Property FirstName As String
  Public Property LastName As String

  Private _childNodes As New List(Of Node)

  Public Property ChildNodes As List(Of Node)
  Get
     Return _childNodes
  End Get
  Set
     _childNodes = value
  End
  End Property

End Class

使用法

Dim parent As New Node
parent.FirstName = "John"
parent.LastName = "Doe"

Dim child_1 As New Node()
child_1.FirstName = "Jane"
child_1.LastName = "Doe"
parent.ChildNodes.Add(child_1)

アップデート

Public Class Employee

  Public Property FirstName As String
  Public Property LastName As String

End Class

Public Class Department

  Private _employees As New List(Of Employee)
  Private _subDepartments As New List(Of Department)

  Public Property SubDepartments As List(Of Department)
  Get
     Return _subDepartments
  End Get
  Set
     _subDepartments = value
  End
  End Property

  Public Property Employees As List(Of Employee)
  Get
     Return _employees
  End Get
  Set
     _employees = value
  End
  End Property

End Class

使用法

Dim dept As New Department
dept.Name  = "Accounting"

Dim subDept1 As New Department()
subDept1.Name = "Audit"

dept.SubDepartments.Add(subDept1)

Dim employee1 As New Employee()
employee1.FirstName = "John"
employee1.LastName = "Doe"

dept.Employees.Add(employee1)

それが役立つことを願っています! これはさらにリファクタリングできますが、これでうまくいくはずです。

于 2012-10-21T08:15:55.457 に答える