cs_Redfire
Messages postés24Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention24 février 2009
-
18 févr. 2009 à 09:44
cs_Redfire
Messages postés24Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention24 février 2009
-
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 ?
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 18 févr. 2009 à 10:22
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.
cs_Redfire
Messages postés24Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention24 février 20091 18 févr. 2009 à 10:38
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