Und hier meine Klasse:
<Serializable()> Public Class clsObjectMaskCollection
Private _objectMaskCollection As New Collection()
Public Sub New()
' 1. ObjectMasks aus Datenbank lesen
Dim connection1 As New SqlClient.SqlConnection( _
trainingsmanager.ConfigConnectionString)
Dim connection2 As New SqlClient.SqlConnection( _
trainingsmanager.ConfigConnectionString)
Try
Dim objSelectQuery As String = "SELECT objectName," & _
"objectNameUserfriendly FROM tm_objects"
connection1.Open()
Dim selectRequest As New SqlClient.SqlCommand(objSelectQuery, _
connection1)
Dim selectReader As SqlClient.SqlDataReader = _
selectRequest.ExecuteReader
While selectReader.Read
'Neue Objektmaske hinzufügen
Dim objectMask As New clsObjectMask(selectReader("objectName"))
' Eigenschaften der Objektmaske extrahieren
objectMask.ObjectNameUserfriendly = selectReader( _
"objectNameUserfriendly")
' Eigenschaften der Properties extrahieren
Dim propSelectQuery As String = "SELECT propertyName," & _
"propertyNameUserfriendly, controlName, controlType," & _
"defaultValue, reqNotEmpty, reqEmail, isIdentityMember, isPk" & _
"FROM tm_properties WHERE objectName = '" & selectReader( _
"objectName") & "'"
connection2.Open()
Dim selectPropRequest As New SqlClient.SqlCommand( _
propSelectQuery, connection2)
Dim selectPropReader As SqlClient.SqlDataReader = _
selectPropRequest.ExecuteReader
While selectPropReader.Read
CType(objectMask.GetProperty(selectPropReader( _
"propertyName")), _
clsPropertyMask).PropertyNameUserFriendly = _
selectPropReader("propertyNameUserfriendly")
CType(objectMask.GetProperty(selectPropReader( _
"propertyName")), clsPropertyMask).ControlName = _
selectPropReader("controlName")
CType(objectMask.GetProperty(selectPropReader( _
"propertyName")), clsPropertyMask).ControlType = _
selectPropReader("controlType")
CType(objectMask.GetProperty(selectPropReader( _
"propertyName")), clsPropertyMask).DefaultValue = _
selectPropReader("defaultValue")
CType(objectMask.GetProperty(selectPropReader( _
"propertyName")), clsPropertyMask).ReqNotEmpty = _
selectPropReader("reqNotEmpty")
CType(objectMask.GetProperty(selectPropReader( _
"propertyName")), clsPropertyMask).ReqEmail = _
selectPropReader("reqEmail")
CType(objectMask.GetProperty(selectPropReader( _
"propertyName")), clsPropertyMask).IsIdentityMember = _
selectPropReader("isIdentityMember")
CType(objectMask.GetProperty(selectPropReader( _
"propertyName")), clsPropertyMask).IsPK = selectPropReader( _
"isPk")
End While
connection2.Close()
' ObjektMaske der Collection hinzufügen
_objectMaskCollection.Add(objectMask, selectReader( _
"objectName"))
End While
connection1.Close()
Catch
connection1.Close()
End Try
' 2. Fehlende leer initialisieren
Dim regCol As Object
For Each regCol In trainingsmanager.ActiveUpdate.registredCollections()
Dim collectionTypeName As System.Reflection.PropertyInfo
collectionTypeName = regCol.GetType.GetProperty( _
"CollectionTypeName")
Dim regClsName = collectionTypeName.GetValue(regCol, New Object() _
{})
'Neue Objektmaske hinzufügen
Dim objectMask As New clsObjectMask(regClsName)
' ObjektMaske der Collection hinzufügen
Try
_objectMaskCollection.Add(objectMask, regClsName)
Catch
End Try
Next
End Sub
Public ReadOnly Property NoOfObjectMasks() As Integer
Get
Return _objectMaskCollection.Count
End Get
End Property
Public ReadOnly Property ObjectMaskCollection() As Collection
Get
Return _objectMaskCollection
End Get
End Property
Public Function GetObjectMask(ByVal myKey As String) As clsObjectMask
Try
Return _objectMaskCollection(myKey)
Catch
Return Nothing
End Try
End Function
Public Function Clone() As clsObjectMaskCollection
Dim BinFormatter As New _
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
Dim memStream As New System.IO.MemoryStream()
BinFormatter.Serialize(memStream, Me)
memStream.Position = 0
Return CType(BinFormatter.Deserialize(memStream), _
clsObjectMaskCollection)
End Function
End Class |