Bonjour à tous,
J'ai un gros problème de conception avec Visual Studio, mais après trifouillé un peu je pense que le problème dépasse les limites du simple éditer de code ...
Voilà j'ai 2 types d'objets : les agents et les IA, chaque agent possédant au moins 1 IA (instanciation d'une des nombreuses classes IA).
J'ai décidé de placer toutes les fonctions disponibles pour ces agents et ces IA dans des Dlls (plugins).
Pour faciliter le chargement de ces fonctions j'ai une classe "PluginManager" qui va gérer l'ouverture / fermeture des plugins ainsi que le rapatriement des fonctions. Et puis comme ce serait bien que ce PluginManager puisse optimiser cette gestion je me suis dit que ce serait cool que ce soit un agent "un peu dégénéré" pour qu'il puisse utiliser des IA.
Je ne sais pas si ça a son importance mais en fait sous Visual j'ai fait 2 projets (agent et IA), et mon problème est que chacun dépend de l'autre, d'où référence circulaire et problème de conception.
Le principe est le suivant :
- Une classe "Monde" crée le PluginManager au démarrage
- Le PluginManager va charger ses fonctions d'IA si on lui a indiqué dans son petit fichier ...
- Le "Monde" va créer tous les autre agents, qui vont passer par le PluginManager pour récupérer leurs fonctions (c'est un singleton au cas où)
Mon problème vient du fait que chaque agent "a du code d'IA" dans sa méthode de chargement au démarrage, donc visual veut les liens vers ces méthodes / classes, et les IA ont "du code d'agent" dans leur méthode de chargement car elles font appel au "PluginManager", d'où référence circulaire ... et là je suis perdu.
J'ai déjà évoqué ce sujet dans une autre section (je voulais séparer le PluginManager du projet Agent), j'ai voulu faire mon malin à l'époque (je voulais une solution en 5 min), et finalement je me trimballe toujours ce problème de conception.
Si vous ne comprenez pas un point n'hésitez pas, si ça peut faire avancer ...
D'avance merci
JS
Partager