2012-07-06 7 views
6

Se afirma en la documentation que siempre se debe hacer interceptores transitoria. Si tengo este código de muestra;Castillo de Windsor - Liberar interceptor con el estilo de vida transitoria

//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() 
       ); 

¿Debo preocuparme por la liberación de SampleInterceptor, o será lanzado de forma automática una vez que el servicio en Sample.Component ha sido puesto en libertad por el contenedor?

Respuesta

9

Su interceptor transitoria tendrá su vida útil ligado al objeto que se asocia con, y será liberada cuando ese objeto se libera como cualquier otra parte de la gráfica de ese objeto

+0

tuve una buena sensación de que este será el el comportamiento del interceptor transitoria, pero no se describió claramente en la documentación. ¡Muchas gracias! – soya

+1

dude en actualizar la documentación para que sea más claro :) Es un wiki abierto –

Cuestiones relacionadas