Mal in´s Unreine:
Es gibt ein Datenobjekt 1, das Personendaten enthält:
Code:
Objekt1
#Id=1
#TS=Uhrzeit der letzten Änderung
#ClassName=Person (Für Interpretationen auf dem Client)
FirstName=André
LastName=Stahl
Adress=2 (Id)
und
Code:
Objekt2
#Id=2
#TS=Uhrzeit der letzten Änderung
#ClassName=Adress (Für Interpretationen auf dem Client)
Country=Halle
Street=Pekinger Str
(wobei die ID´s
GUID´s o.ä. sind)
Wenn ein Edit Id=1 und PropName='FirstName' zugewiesen bekommt, holt es sich vom Manager Objekt1 und nutzt (wenn vorhanden) dessen Eigenschaft FirstName.
Ein anderes Edit soll Id=2 und PropName='Street' verwenden. Das macht dann keinen Unterschied und es ist egal, welche Businessobjekte da letztlich representiert werden.
Ein drittes Edit kann aber auch einfach PropName='Adress.Country' zugewiesen bekommen. Wenn es z.B. in einem Bearbeitungsformular für eine Person liegt würde das Formular die PersonenId erhalten und diese an alle untergeordneten Controls weiter geben.
Das Country-Edit würde zunächst nun das Objekt1 beim Manager abrufen, wobei der auf Grund des Punktes in PropertyName noch prüft ob Objekt1.Adress eine gültige Id enthält und dann statt dem Objekt1 eben das Objekt2 zurück gibt und dessen Eigenschaft "Country" weiter verwendet wird.
Intern gibt es daher tatsächlich die Eigenschaften:
- Id
- PropName
- usedId
- usedPropName
Der Manager kümmert sich also sebständig um die Auflösung von Unterobjekten.