2010-11-12 7 views
1
container 
    .Register 
    (
     AllTypes 
      .FromAssemblyContaining<TestInterceptor>() 
      .BasedOn<IInterceptor>() 
      .Where(t => t.Name.EndsWith("Interceptor")) 
      .WithService.AllInterfaces() 
      .Configure(c => c.LifeStyle.Transient), 

     Component 
      .For<IRepository>() 
      .ImplementedBy<LogRepository>() 
      .Interceptors 
      (
       InterceptorReference.ForType<TestInterceptor>(), 
       InterceptorReference.ForType<TestTwoInterceptor>(), 
       InterceptorReference.ForType<TestThreeInterceptor>() 
      ).Anywhere 
    ); 

Existe-t-il un moyen facile de spécifier qu'un composant utilisera tous les intercepteurs au lieu d'avoir à les spécifier?Castle Windsor - Spécifier tous les intercepteurs

Répondre

1

C'est un problème intéressant. Il n'y a aucun moyen de le résoudre dans l'API fluide, surtout parce que la plupart du temps, vous voulez avoir un contrôle précis sur les intercepteurs à appliquer, et dans quel ordre. Ceci est un outil chirurgical. Quoi qu'il en soit, si vous êtes sûr que vous devez aller de cette façon, enregistrez d'abord les intercepteurs, puis prenez leur nom (via container.Kernel.GetAssignableHandlers(typeof(IInterceptor))) et appliquez-les en boucle au composant.

Questions connexes