public void Test1() { NumInstalls = 0; InitTest.WasRun = false; TickTest.WasRun = false; DisposeTest.WasRun = false; var container = new DiContainer(); container.Bind(typeof(TickableManager), typeof(InitializableManager), typeof(DisposableManager)) .ToSelf().AsSingle().InheritInSubContainers(); // This is how you add ITickables / etc. within sub containers container.BindAllInterfacesAndSelf<FooKernel>() .To<FooKernel>().FromSubContainerResolve().ByMethod(InstallFoo).AsSingle(); var tickManager = container.Resolve<TickableManager>(); var initManager = container.Resolve<InitializableManager>(); var disposeManager = container.Resolve<DisposableManager>(); Assert.That(!InitTest.WasRun); Assert.That(!TickTest.WasRun); Assert.That(!DisposeTest.WasRun); initManager.Initialize(); tickManager.Update(); disposeManager.Dispose(); Assert.That(InitTest.WasRun); Assert.That(TickTest.WasRun); Assert.That(DisposeTest.WasRun); }