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().CopyIntoAllSubContainers(); // 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); }
public static TSystem InitSystem <TSystem>(DiContainer Container) where TSystem : SystemBase { Container.BindAllInterfacesAndSelf <TSystem>().To <TSystem>().AsSingle(); return(Container.Resolve <TSystem>()); }