Dépendance Circulaire [Résolu]

cs_Redfire 25 Messages postés mercredi 18 décembre 2002Date d'inscription 24 février 2009 Dernière intervention - 18 févr. 2009 à 09:44 - Dernière réponse : cs_Redfire 25 Messages postés mercredi 18 décembre 2002Date d'inscription 24 février 2009 Dernière intervention
- 18 févr. 2009 à 10:38
Bonjour, je débute en C# et je me retrouve face à un problème.

Je m'essaie au développement en couche, je dispose d'une classe library qui contient tout ce qui est GUI et une autre class library ou je compte mettre tout ce qui est connexion à une DB.
A partir de ma class library DB, je dois pouvoir accéder à des objets de l'autre class library.
J'ajoute donc une référence vers la seconde et tout se passe bien. J'arrive à accéder à ces objets.
Cependant, le problème vient lorsque, à partir de ma library réservée au GUI, je veux appeler une fonction qui se trouve dans l'autre library (faire le contraire, donc), j'essaie d'ajouter une référence à celle-ci et je tombe sur le message suivant :
"a reference to ... could not be added. Adding this project as a reference would cause a circular dependency"
Je pense comprendre le message d'erreur, mais alors ... comment faire pour accéder à mes méthodes à partir de mon GUI ?

Merci d'avance.
Afficher la suite 

2 réponses

Répondre au sujet
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 18 févr. 2009 à 10:22
+3
Utile
Salut.

Juste un petit rappel : le développement en couches implique que les couches soit indépendantes dans un sens. Pour un modèle MVC, la vue connaît le contrôleur, qui connait le modèle, mais le modèle ne connait rien. Si tu devais faire une référence vers ton contrôleur dans ta vue, tu perdrais tout l'intérêt des couches, puisque tu ne pourrais pas les compiler indépendamment.

Il faut bien sûr pouvoir transmettre des paramètres à ton modèle (class library DB), et pour cela : soit tu utilises les types directement existants en C#, soit tu crées encore une autre class library, référencée à la fois par ton contrôleur et ton modèle, dans laquelle tu crées une classe qui te servira d'objet à transmettre, mais jamais le modèle n'est censé faire d'appel au contrôleur.

Pour conclure, je dirais que même le contrôleur n'est pas censé référencer ton modèle, mais là encore, une class library qui contient une interface décrivant ton modèle, et tu instancie ton modèle via une class factory. Ca parrait peut-être un peu compliqué au premier abord, mais si tu recherches sur internet, tu trouveras certainement plus d'infos.

Krimog :
while (!succeed = try()) ;
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de krimog
cs_Redfire 25 Messages postés mercredi 18 décembre 2002Date d'inscription 24 février 2009 Dernière intervention - 18 févr. 2009 à 10:38
+1
Utile
Je te remercie d'avoir pris le temps de répondre à ma question, assez rapidement - qui plus est - et pour tes explications.
Je vais me pencher un peu là-dessus :-)
Bonne journée
Commenter la réponse de cs_Redfire

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.