2017-01-01 1 views
0

In diesem Moment habe ich eine dynamische abstrakte Fabrik mit einer Singleton-Implementierung der Klasse Factory, wo ich alle Fabriken speichern. Jede Fabrik hat ihre eigenen Typen, aus denen Instanzen erstellt werden können.Circular Abhängigkeit von Referenzen

Diese Fabriken haben auch die RegisterType-Methode, die ich erstellt habe, um Typen von außerhalb dieses Projekts (DLL) zu registrieren.

Ich möchte einen Typ außerhalb des Projekts registrieren. Um dies zu erreichen, müssen ProjectA und ProjectB Informationen über einander haben.

Meine Frage ist also, wie ProjectA und ProjectB voneinander wissen können, ohne diesen Fehler "Circular Dependency on References" zu bekommen.

Antwort

0

This blog post from Steve Smith adressiert direkt Ihre Frage, die ich glaube.

Die Frage erneut lesen, der Link, den ich gepostet habe, ist nicht relevant, da es sich um 2 Projekte handelt.

Bei den meisten Projekten (Web, Desktop, sogar die meisten Apis) haben Sie normalerweise ein Projekt, das Ihr Einstiegspunkt ist, Ihr anderes Projekt sollte abhängigen Code oder Infrastrukturcode enthalten, es sollte kein bidirektionales Paar der 2 geben (oder mehr) Projekte.

Es könnte sinnvoll sein, ein IoC-Framework zu verwenden und Ihre Abhängigkeiten zu registrieren. Sie würden dies beispielsweise in ProjectA tun und Ihren Fabriktypen von ProjectB bereitstellen.

Achten Sie darauf, bei der Übergabe dieser Factories (und anderer Typen) in ProjectB, wo die Implementierung von ProjectA stammt, mithilfe von Interfaces zu abstrahieren, dann können diese Interfaces in ProjectB sitzen und brauchen keine Rückwärtsabhängigkeit.