2012-07-06 25 views
6

È indicato nel numero documentation che è necessario rendere sempre gli interceptor transitori. Se ho questo codice di esempio;Castle Windsor - Rilasciare l'interceptor con Transient Lifestyle

//register interceptor 
container.Register(Classes.FromAssemblyNamed("Sample.Interceptors") 
.BasedOn<Castle.DynamicProxy.IInterceptor>() 
.LifestyleTransient()); 

//Configure components to intercept 
container.Register(Classes.FromAssemblyNamed("Sample.Component") 
.IncludeNonPublicTypes().InNamespace("Sample.Component", true) 
      .Configure(c=> 
       c.Interceptors(InterceptorReference.ForType<SampleInterceptor>()) 
       .Anywhere.LifestyleSingleton()) 
       .WithService.DefaultInterfaces() 
       ); 

dovrei preoccupare rilasciare SampleInterceptor, o sarà rilasciato automaticamente una volta che il servizio in Sample.Component è stata rilasciata dal contenitore?

risposta

9

vostro intercettore transitorio avrà la durata di vita legata all'oggetto si associa con, e verrà rilasciato quando l'oggetto viene rilasciato come qualsiasi altra parte del grafico che dell'oggetto

+0

ho avuto un buon feeling che questo sarà il comportamento dell'intercettore transitorio, ma non è stato chiaramente descritto nella documentazione. Grazie mille! – soya

+1

Sentiti libero di aggiornare la documentazione per renderla più chiara :) È una wiki aperta –

Problemi correlati