Je me bats pour éviter les dépendances cycliques. Je sais que je dois masquer l'implémentation avec des interfaces, mais comment gérer une situation avec deux assemblys, où chacun doit soit instancier des classes de l'autre ou appeler une méthode statique à partir de là?Dépendances cycliques - encore une fois
Edit:
Je comprends cela peut être résolu en utilisant un seul assemblage. Nous en avons plus d'un pour la raison suivante:
- notre "système" se compose de plusieurs composants. Un client peut avoir un seul composant, ou plus. Nous avons donc créé différents assemblages pour différents composants. Cela a du sens - pourquoi déploieriez-vous des choses dont vous n'avez pas besoin - n'est-ce pas un gaspillage de mémoire?
- choses qui étaient communes à plus de composants, principalement des classes auxiliaires, sont allés à un autre assemblage - encore une fois tous les composants ont besoin de toutes les classes auxiliaires, donc il y a plus d'assemblages
- Cependant, ces deux applications peuvent parler les uns aux autres - le système Pour les médecins, les demandes sont envoyées au système pour les infirmières, les demandes sont retournées, etc. - et voici où le problème réel est
Avoir les deux composants en conversation est vraiment une des situations que nous avons eues une dépendance cyclique des conflits avant. Cela arrive de temps en temps et quand cela arrive, nous devons trouver une solution - déplacer des classes - et parfois nous devons ajouter un nouvel assemblage. Maintenant, nous avons comme 8-10 assemblages, et il semble que plus vous avez le plus vite ils sont ajoutés :) - Par exemple, nous avons ajouté une fonction générale qui utilise des attributs personnalisés - nous avons donc ajouté un autre assemblage juste pour l'attribut - juste au cas où nous ne serions pas en conflit à l'avenir
Est-ce la voie à suivre? Je sens vraiment que nous faisons quelque chose de fondamentalement faux :)
J'apprécie vraiment votre contribution.
Vous n'êtes pas sûr de l'avoir suffisamment expliqué. Peut-être que vous devriez utiliser une seule assemblée. –
Veuillez modifier la question pour inclure le contexte de domaine et/ou un exemple de code. –