1: Public Class Project
2: Inherits BusinessBase(Of Project)
3:
4: Public ReadOnly Property LineItems() As LineItemsCollection
5: Get
6: CanReadProperty(True)
7: If _lineItems Is Nothing Then
8: If Me.IsNew Then
9: _lineItems = LineItemList.NewLineItemList(Me)
10: Else
11: _lineItems = LineItemList.GetLineItems(Me)
12: End If
13: AddHandler _lineItems.ListChanged, _
14: AddressOf LineItemChangedHandler
15: End If
16: Return _lineItems
17: End Get
18: End Property
19:
20: Public Sub LineItemChangedHandler(_
21: ByVal sender As Object, _
22: ByVal e As System.ComponentModel.ListChangedEventArgs)
23: If (e.ListChangedType = ListChangedType.ItemAdded) Then
24: _lineItems(e.NewIndex).Project = Me
25: End If
26: End Sub
27:
28:
29: End Class
30:
31: Public Class LineItem
32: Inherits BusinessBase(Of LineItem)
33:
34: <NotUndoable()> <NonSerialized()> Private _project As Project
35:
36: Public Property Project() As Project
37: Get
38: If _project Is Nothing Then
39: _project = Project.GetProject(_projectId)
40: End If
41: Return _project
42: End Get
43: Friend Set(ByVal value As Project)
44: If Not value.ID = _projectId Then
45: _project = proj
46: ProjectId = proj.ID
47: End If
48: End Set
49: End Property
50:
51: Public Property ProjectId() As Guid
52: Get
53: CanReadProperty(True)
54: Return _projectId
55: End Get
56: Private Set(ByVal value As Guid)
57: If _projectId <> value Then
58: _projectId = value
59: PropertyHasChanged()
60: End If
61: End Set
62: End Property
63:
64: End Class