2010-07-23 15 views
1

Je travaille sur une bibliothèque qui doit utiliser le localisateur de service commun (http://commonservicelocator.codeplex.com/) pour fournir un support générique IOC afin de ne pas entrer en conflit avec les consommateurs. Évidemment, je ne veux pas faire référence directement aux cadres du CIO dans mon projet, mais je ne suis pas sûr de savoir comment annoter les parties de façon à pouvoir les trouver dans les différents cadres. Par exemple, MEF fonctionne généralement en recherchant des classes avec l'annotation Exporter et LinFu en trouvant des classes avec l'annotation Implements. Ces deux annotations sont définies dans leurs projets respectifs, ce qui nécessite que je les référence tous les deux.Comment puis-je définir des exportations génériques sans utiliser les bibliothèques IOC?

Comment puis-je éviter d'ajouter toutes ces classes et d'annoter toutes mes classes plusieurs fois? Il ne s'adapte certainement pas bien aux nouveaux cadres du CIO car une reconstruction serait nécessaire pour les annotations de chaque nouveau cadre.

Répondre

2

De la documentation:

« Les bibliothèques ne doivent pas configurer le conteneur »

« En tant que bibliothèque ou auteur cadre, comprendre que vous ne devriez pas être mettre quoi que ce soit dans le récipient - les auteurs de l'application à choisir quel que soit le conteneur qu'ils veulent.Vous avez besoin de pour documenter quels services vous avez besoin regis Si vous utilisez le conteneur ServiceLocation.Current ambient . "

Donc, je ne pense pas que vous ayez besoin d'exporter quoi que ce soit, il suffit de documenter ce que vous devez consommer pour fonctionner. Et utilisez éventuellement l'interface ServiceLocator.Current pour résoudre les dépendances dont vous avez besoin.

+0

+1 - Je suis d'accord. Vous pouvez également fournir quelques implémentations et leur permettre de choisir, mais je ne pense pas que cela soit recommandé. – TheCloudlessSky