Conteneur IoC C # qui analyse le dossier bin

Seb

Conteneur IoC C # qui analyse le dossier bin


Je recherche un conteneur IoC qui scanne tous les types dans tous les assemblages du dossier bin ET est compatible avec mono.

J’ai utilisé LightCore, qui a pris un peu de configuration pour déclarer l’implémentation d’une interface spécifique, puis la résout automatiquement, mais il ne semble pas être compatible avec le mono …

J’ai également essayé TinyIoC, mais celui-ci analyse uniquement les types dans les assemblys référencés, et mon problème est que l’assembly qui contient l’implémentation ne peut pas être référencé par mon autre projet qui doit le résoudre (problème de référence circulaire).

Contexte (à lire uniquement si vous voulez comprendre pourquoi j’ai ce problème de référence circulaire):

Dans ma solution, j’ai 2 projets, le principal, qui contient mes entités et ma logique métier, et le second qui contient les éléments d’accès aux données.

Je veux le faire de cette façon, car j’ai dû changer de système de base de données plusieurs fois auparavant, en portant l’application de MSSQL vers PostgreSQL par exemple. Mon assemblage principal contient donc plusieurs éléments:

  • Entités, objets réels avec lesquels je travaille dans ma logique métier au sein du même assembly,

  • Un contrat pour le contexte de stockage qui décrit comment il doit être implémenté: il doit contenir les méthodes beginTransaction, commit, rollback,

  • Un contrat pour le référentiel générique, qui dit qu’il devrait implémenter une méthode pour obtenir un seul enregistrement, une liste etc …

Mon deuxième assemblage ne contient que la mise en œuvre des contrats, et s’occupe d’accéder au magasin de données.

Le résultat est que mon deuxième assemblage a besoin d’une référence à mon assemblage principal pour connaître les types avec lesquels il devra travailler. Cela signifie que mon assemblage principal ne peut pas avoir de référence à l’accès aux données car cela provoquerait le problème de référence circulaire.

J’utilise LightCore pour résoudre la mise en œuvre de mes contrats et cela fonctionne très bien, cependant, LightCore fait référence à des choses telles que PresentationFramework, et mono ne semble pas l’aimer. Et c’est pourquoi je recherche maintenant un conteneur IoC qui ferait la même chose que LightCore (dossier de scan et assemblages non référencés) et qui est compatible avec mono.

Merci! 🙂

Réponses


 BatteryBackupUnit

http://www.ninject.org/download.html est spécifié pour prendre en charge Mono2.0 et 4.0, au moins ninject 3.0. Il faudrait essayer 3.2.

Avec ninject.extensions.conventions, vous pouvez analyser les assemblages à votre guise. Vous pouvez spécifier un filtre (chemin, nom, …) ou lui passer un chemin vers tous les assemblys qu’il doit analyser.

Exemple d’utilisation: https://github.com/ninject/ninject.extensions.conventions/wiki/Overview

 kernel.Bind( x => x .FromThisAssembly() // .IncludingNonePublicTypes() .SelectAllClasses() .BindAllInterfaces() .Configure(b => b.InSingletonScope())); 

 

#, Analyse, bin, C, Conteneur, dossier, IoC, Le, qui

 

wiki

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *