Windsor MixIn是一个单例吗?

问题描述 投票:0回答:3

我有一个需要某些状态才能运行的MixIn。

我正在注册它。。

    container.Register(Component.For(Of ICat) _
                        .ImplementedBy(Of Cat) _
                        .LifeStyle.Transient _
                        .Proxy.MixIns(New MyMixin()))

当我调用containerat.Resolve(of ICat)时,我获得了ICat的代理,该代理也实现了IMixin。

但是,如果我再次调用containerat.Resolve(ICat),则会获得ICat的新代理,但MyMixin是SAME实例。 (这很有意义,因为我没有告诉容器创建IMixin的任何方法)

因此,即使该组件的生活方式为瞬态,IMixin还是一个Singleton。

我如何通过Fluent接口告诉Windsor为该组件创建MyMixIn的新实例?

我有一个需要某些状态才能运行的MixIn。我正这样注册它。.container.Register(Component.For(ICat)_ .ImplementedBy(Cat)_ ...

castle-windsor aop mixins castle-dynamicproxy
3个回答
1
投票

我想我已经解决了。


0
投票

我不确定它如何影响Windsor,但在DynamicProxy级别,每种代理类型都有mixin实例。因此,如果要创建自己的mixin实例,则可能每次都在生成新的代理类型。为了避免这种情况,请在您的混合类型中覆盖Equals和GetHashCode。


0
投票

如果您以过分的生活方式注册mixin,它将为每个组件创建一个新实例:

© www.soinside.com 2019 - 2024. All rights reserved.