Castle Windsor - 使用瞬时生命周期释放拦截器

6

文档中指出,您应该始终将拦截器设置为瞬态。如果我有这个示例代码;

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

我需要担心释放SampleInterceptor吗?还是一旦Sample.Component中的服务被容器释放,它就会自动释放?

1个回答

9

您的瞬态拦截器的生命周期将绑定到您所关联的对象,并且将在该对象作为其图的任何其他部分一样被释放时被释放。


我有一种好感,认为这将是瞬态拦截器的行为,但文档中没有清楚地描述。非常感谢! - soya
1
随意更新文档以使其更清晰 :) 这是一个开放的维基。 - Krzysztof Kozmic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接