Voici un extrait de code du projet AspComet qui fonctionne avec Autofac.Func <T> injection avec conteneur Windsor
public MessageBus(IClientRepository clientRepository, Func<IMessagesProcessor> messagesProcessorFactoryMethod)
{
this.clientRepository = clientRepository;
this.messagesProcessorFactoryMethod = messagesProcessorFactoryMethod;
}
Comment puis-je injecter "Func<IMessagesProcessor> messagesProcessorFactoryMethod
" avec Windsor, est-il possible?
Merci.
Il fonctionne comme vous le suggérez, mais je devais revenir IMessagesProcessor du récipient alors je codé comme ceci: Func messagesProcessorFactoryMethod =() => container.Resolve (); Y a-t-il un meilleur moyen ou c'est le meilleur moyen? –
yang
Vous pouvez obtenir un comportement de type Autofac sans travail supplémentaire en utilisant le service personnalisé suivant: http://www.assembla.com/code/kkozmic/subversion/nodes/Garage/Castle.LightweightFactoryFacility Si vous ne voulez pas Pour utiliser l'installation, la solution que vous avez décrite dans le commentaire précédent est la voie à suivre. –
À partir de la ligne de réseau (et à partir de la prochaine version 2.5), ce comportement est intégré, c'est-à-dire que vous n'aurez pas à enregistrer explicitement 'Func'. Le simple fait d'avoir le constructeur suffira à Windsor pour savoir quoi faire, et il fournira le délégué lui-même. –