2012-07-06 6 views
6

Es ist in der documentation, dass Sie immer Interzeptoren transient festgelegt sind. Wenn ich diesen Beispielcode habe;Castle Windsor - Releasing Interceptor mit transientem Lebensstil

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

Muss ich mir Sorgen über SampleInterceptor Freigabe, oder wird es automatisch freigegeben, wenn der Dienst in Sample.Component wurde von dem Behälter freigegeben worden?

Antwort

9

Ihr vorübergehender Interceptor wird seine Lebensdauer zu dem Objekt, das Sie es assoziieren gebunden mit und wird freigegeben, wenn das Objekt als jeden anderen Teil des betreffenden Graphen des Objekts veröffentlicht wird

+0

ich ein gutes Gefühl hatte, dass dies das sein wird, Verhalten des transienten Interceptors, aber es wurde nicht klar in der Dokumentation beschrieben. Vielen Dank! – soya

+1

Fühlen Sie sich frei, die Dokumentation zu aktualisieren, um es klarer zu machen :) Es ist ein offenes Wiki –