Public Class Content
Private _ID As String
<XmlIgnore()> Public Type As String
<XmlIgnore()> Public LiveDate As Date
<XmlArray("Items"), XmlArrayItem("Item", GetType(ContentItem))> _
Public Items As New ContentItems()
<XmlIgnore()> _
Public Property ID() As String
Get
Return _ID
End Get
Set(ByVal Value As String)
_ID = Value
Dim drInfo As SqlDataReader = cmsDB.GetContentInfo(_ID)
With drInfo
If .Read Then
LiveDate = CDate(!online_date)
Type = CStr(!content_type)
End If
.Close()
End With
End Set
End Property
Public Sub Add(ByVal Name As String, ByVal Value As String)
Items.Add(New ContentItem(Name, Value))
End Sub
Shared Function Load(ByVal ContentID As String) As Content
Dim sContent As String = cmsDB.GetContent(ContentID)
If CBool(Len(sContent)) Then
Dim strMem As New StringReader(sContent)
Dim xml As New XmlSerializer(GetType(Content))
Return CType(xml.Deserialize(strMem), Content)
End If
End Function
Public Sub Save()
Dim strMem As New StringWriter()
Dim xml As New XmlSerializer(Me.GetType)
xml.Serialize(strMem, Me)
cmsDB.UpdateContent(_ID, strMem.ToString, LiveDate)
End Sub
Public Class ContentItems
Inherits CollectionBase
Private Lookup As New SortedList()
Public Sub Add(ByVal Item As ContentItem)
Dim I As Integer = List.Add(Item)
Lookup(Item.Name) = I
End Sub
Default Public ReadOnly Property Item(ByVal Index As Integer) As ContentItem
Get
Return CType(List.Item(Index), ContentItem)
End Get
End Property
Default Public ReadOnly Property Item(ByVal Key As String) As ContentItem
Get
If Lookup.Contains(Key) Then
Return CType(List.Item(CInt(Lookup(Key))), ContentItem)
Else
Return New ContentItem()
End If
End Get
End Property
End Class
Public Class ContentItem
<XmlAttributeAttribute()> _
Public Name As String
<XmlText()> _
Public Value As String
Public Sub New()
End Sub
Public Sub New(ByVal Name As String, ByVal Value As String)
Me.Name = Name
Me.Value = Value
End Sub
End Class
End Class