myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Basistechnologien und allgemeine .NET-Klassen » Beziehung zwischen Objekten beim Laden der Objekte wiederherstellen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Beziehung zwischen Objekten beim Laden der Objekte wiederherstellen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Xqgene
myCSharp.de-Mitglied

Dabei seit: 29.04.2004
Beiträge: 2.051


Xqgene ist offline

Beziehung zwischen Objekten beim Laden der Objekte wiederherstellen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

ich suche nach "bester" Lösung für folgendes Problem.

Es gibt ein Objekt Person. Dieses Objekt enthält Beziehungen zu anderen Person Objekten.

C#-Code:
class Person {
  ind id;
  List<Person> children;
  List<Person> parents;
}

die Objekte werden in eine XML Datei gespeichert. etwa so:

XML-Code:
<xml>
  <Person>
    <id>1</1>
    <Children>
      <Person id="3" />
      <Person id="4" />
    </Children>
    <Partens>
      <Person id="2" />
    </Partens>
  </Person>
  <Person>
    <id>2</1>
    <Children>
      <Person id="1" />
    </Children>
  </Person>
  <Person>
    <id>3</1>
    <Partens>
      <Person id="1" />
    </Partens>
  </Person>
  <Person>
    <id>4</1>
    <Partens>
      <Person id="1" />
    </Partens>
    <Children>
      <Person id="5" />
    </Children>
  </Person>
  <Person>
    <id>5</1>
  </Person>
</xml>

Und später wieder geladen.
Und genau hier steckt mein Problem. Ich suche also effektivste Möglichkeit die Objekte aus der XML Datei zu laden und die Beziehung herzustellen. Wenn ich zuerst alle Person Objekte erstelle und dann aus der Liste die children und parents suche, mache ich unter Umständen mehrere Durchläufe, biss alle Beziehungen hergestellt sind.
Wenn ich gleich alle Beziehungen herstelle, dann muss ich durch die XML Datei hin und her springen.
Noch 'ne Möglichkeit wäre, dass ein Person Objekt über Erzeugung eines anderen Objektes informiert wird und fügt den dann bei bedarf zu seinen Beziehungen hinzu.

Oder noch weitere Vorschläge?
05.10.2012 19:13 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.464
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

05.10.2012 19:26 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Xqgene
myCSharp.de-Mitglied

Dabei seit: 29.04.2004
Beiträge: 2.051

Themenstarter Thema begonnen von Xqgene

Xqgene ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

da bin ich wieder.

also, der Surrogat Vorschlag ist zwar interessant, löst aber nicht wirklich mein Problem. ich habe jetzt eine "Benachrichtigungs"-Lösung gebastelt.

Objekte (Personen in dem Beispiel von oben) registrieren sich bei einem "Creator" mit einer bestimmten Benachrichtigungsbedienung. Ist beim Erstelle eines Objektes diese Bedienung erfüllt (z.b. Id des Objektes stimmt überein), wird das registrierte Objekt darüber benachrichtigt.
12.10.2012 23:37 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.464
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Xqgene,

meinst du dass so, dass wenn ein Objekt mit eine bestimmten ID erstellt werden soll, aber ein Objekt mit dieser ID schon existiert, dass dann das bestehende Objekt benachrichtigt wird?

Oder registriert ein Objekt alle IDs über deren Objekt-Erstellungen es benachrichtigt werden will?

Bei der zweiten Möglichkeit, müsste sich jedes Objekt (bzw. jede Klasse) darum kümmern, was passieren soll, wenn so eine Benachrichtigung kommt, z.B. ob es das Objekt jetzt in die Parent- oder Children-Liste eingetragen werden soll. Das Modell müsste sich dann um etwas kümmern, was eigentlich der DAL kapselen sollte. Außerdem wäre das dann unnötigerweise ein  Cross-Cutting Concern, der in jeder neuen Klasse, die von dem Problem steht, wieder ausprogrammiert werden müsste. Mal ganz abgesehen davon, dass man vor dem Problem von nur teilweise gefüllten Listen stehen würde.

Mit den Surrogaten hättest du es dagegen an einer zentralen Stelle ein- für alle mal abgehandelt. Außerdem kann das Surrogat das eigentliche Laden an den DAL delegieren. Und die Listen sind (logisch gesehen) zu jedem Zeitpunkt komplett (auch wenn die Objekte physisch noch nicht geladen sind). Also alles schön sauber.

Ich wüsste auch nicht, warum Surrogate dein Problem nicht lösen sollten.

herbivore
13.10.2012 04:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 7 Jahre.
Der letzte Beitrag ist älter als 7 Jahre.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 15.10.2019 10:29