0
我想弄清楚內核如何處理它在其中的對象。例如,下面的代碼創建兩個作用域,並聲明當作用域相同時,同一個對象被解析,而當作用域不同時作用不同。在Ninject內核中處理超出範圍的對象
[Test]
public void DisposingScope()
{
var kernel = new StandardKernel();
ScopeObject scopeObject = null;
kernel.Bind<IBall>().To<RedBall>().InScope(context => scopeObject);
var scope1 = new ScopeObject();
var scope2 = new ScopeObject();
scopeObject = scope1;
var ball1A = kernel.Get<IBall>();
var ball1B = kernel.Get<IBall>();
Assert.That(ball1A, Is.SameAs(ball1B)); // <== Balls from the same scope
scopeObject = scope2;
var ball2 = kernel.Get<IBall>();
Assert.That(ball2, Is.Not.SameAs(ball1A)); // <== Balls from different scopes
}
正如我有兩個範圍,也有在容器內的RedBall
兩個實例。
- 如何\何時這些被刪除?
- 如何擴展我的測試以證明容器中的球被丟棄?