Comment utiliser Autofac dans un projet de bibliothèque de classes?
J'ai de la mise en œuvre suivants:
private INewsRepository newsRepository;
public NewsService(INewsRepository newsRepository)
{
this.newsRepository = newsRepository;
}
Ce service est un service distinct projet que celui de mon projet web. Où et comment puis-je spécifier l'injection de dépendance? Aurais-je encore besoin de le mettre dans mon global.asax fichier? Si ce service est utilisé mes autres applications?
source d'informationauteur Brendan Vogt
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez référence du conteneur à partir de la racine de l'application (à l'échelle mondiale.asax). Ceci est connu comme la Registre de Résoudre modèle de Communiqué de.
Votre utilisation correcte de Constructeur Injection assure que vous pouvez réutiliser le NewsService classe à partir d'autres applications sans que ceux d'autres applications utilisation d'un Conteneur d'injection de dépendances (ou du tout).
C'est un bon début à la conception du service dans un DI manière respectueuse de l'mais tout en gardant ce conteneur agnostique.
À l'intérieur de la Bibliothèque de Classe que j'ai créé le "Registre" de la classe. Ici l'Autofac l'installation est faite.
Dans mon projet de test que j'ai lu ce fichier (Enregistrer.RegisterTypes) et init le _container.
Maintenant, j'ai accès à Résoudre tous les goodies à l'intérieur du projet, je suis en train de tester.
Je suppose que cela dépend de si vous avez l'intention d'utiliser la même assemblée dans de multiples applications hôtes. L'assemblée a vraiment besoin de références à AutoFac? Je déconseille ce, comme si vos besoins changent plus tard, vous avez une charge de références inutiles. Votre application hôte doit contrôler la façon d'assembler les pièces modulaires, donc je laisse la configuration de votre hôte (dans ce cas, votre application web. Si vous voulez pousser un certain contrôle de l'enregistrement, vous pouvez créer un type qui s'occupe de l'enregistrement pour vous, mais comme je l'ai mentionné avant, votre assemblée est essentiellement lié à l'utilisation de AutoFac par exemple:
Cette façon, vous pouvez facilement appeler: