1
我試圖理解一個有點複雜的場景。基本上,如果我有一個在城堡註冊爲LifestyleTransient()
類X
:使用PerWebRequest組件的瞬態組件,PerWebRequest組件何時超出作用域?
Component.For<IX>()
.ImplementedBy<X>()
.LifestyleTransient()
X
看起來像:
public X : IX
{
private IY _y;
public X(IY y)
{
_y = y;
}
....
}
和Y
因此註冊:
Component.For<IY>()
.ImplementedBy<Y>()
.LifestylePerWebRequest()
,看起來像:
public Y : IY, IDisposable
{
private Object obj;
public Y()
{
obj = new Object();
}
public void Dispose()
{
obj.Dispose();
}
}
和
如果我創建的X
實例Release
它:
WindsorContainer Container;
IX x = Container.Resolve<IX>();
Container.Release(x);
什麼時候Dispose
得到所謂的Y
?它是在Web請求的末尾還是x的實例被釋放? Dispose
會被叫到嗎?!
注:這是一個有點converluted例子,我實際的例子是更爲複雜,invloves一個MVC的ControllerFactory和其他各種部件的技術,但問題相當歸結爲以上這simpliest形式。