Я пытаюсь выяснить, как ядро удаляет объекты, которые у него есть. Например, следующий код создает две области и утверждает, что один и тот же объект решает, когда область видимости одна и та же, другая, когда она отличается.Устранение объектов вне зоны в ядре 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
, занимаемые в контейнере.
- Как \ когда они удаляются?
- Как продлить мой тест, чтобы доказать, что шары в контейнере расположены?