Jeder Weg, um Zirkelbezug Abhängigkeit in C#?
Habe ich eine Lösung mit 3 Projekten
Project1 - main application
Project2 - graphing application
Project3 - graphing library
Die Daten zugegriffen wird, die von Objekten im Projekt1. Projekt 1 hat eine Referenz auf Projekt 2, um die Anzeige der Daten (Formular), und projektg 2 hat eine Referenz auf Projekt 3 um die eigentliche schwerarbeit der das Rendern des Graphen.
Nun, Projekt 3 muss der Zugriff auf die Objekte/Methoden von Projekt 1 als das ist, wo die Daten Leben. Aber wenn ich einen Verweis von Projekt 3 zu Projekt 1, bekomme ich eine Fehlermeldung über Zirkelverweise.
Wie kann ich dieses Problem lösen?
Danke,
Reza
- vielleicht solltest du strukturieren Sie Ihre Architektur
- wenn ich Ahnung hätte über diese Einschränkung, ich hätte nicht konzipiert, es auf diese Weise. Ich bin immer noch lernen C#. Ich Frage mich, ob nur der Zusammenführung von Projekten könnte am einfachsten sein..
- ok schade, ich weiß wirklich nicht, ob es eine Weise, dieses problem zu lösen, aber die einzige Möglichkeit die ich sehe ist zum umgestalten von Projekten.
- Ich ziehe die Daten Teil in ein neues Projekt, um zu sehen, wenn dieses es regelt, wie in den Lösungen unten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie halten den Fluss in eine Richtung.. nach unten.
Umgehen, ich haben in der Regel einen "Models" - Projekt. Daten-Modelle gespeichert werden in diesem Projekt alle von selbst, und dieses Projekt verwiesen wird, die von jedem anderen Projekt, das Sie benötigt.
Nein, es gibt keinen Weg, um dieses. Sie haben eine zirkuläre Abhängigkeit. Sie müssen umgestalten, die Ebenen Ihrer Anwendung.
Was ich finde, funktioniert am besten für mich in Bezug auf die Ebenen (von der niedrigsten zur höchsten)
Eine Möglichkeit für den Umgang mit zirkulären Referenzen ist die Umstrukturierung Ihrer Anwendung.
Projekt erstellen 4, und legen Sie die Schnittstellen auf die gemeinsamen Projekte dort. Sie können Projekt 4 von allen anderen Projekten. Jetzt implementieren Schnittstellen aus, dass Projekt in einem der drei anderen Projekte, und verwenden Implementierungen durch einen factory-Mechanismus von einer Art (eine inversion of control-container ist auch gut, aber es kann ein overkill für einfachere Anwendungen).