예제 #1
0
        void InstallBindings(List <MonoBehaviour> injectableMonoBehaviours)
        {
            if (_parentNewObjectsUnderContext)
            {
                _container.DefaultParent = transform;
            }
            else
            {
                _container.DefaultParent = null;
            }

            _container.Settings = _settings ?? ZenjectSettings.Default;

            _container.Bind <ZenjectSceneLoader>().AsSingle();

            ZenjectManagersInstaller.Install(_container);

            _container.Bind <Context>().FromInstance(this);

            _container.Bind(typeof(ProjectKernel), typeof(MonoKernel))
            .To <ProjectKernel>().FromNewComponentOn(gameObject).AsSingle().NonLazy();

            _container.Bind <SceneContextRegistry>().AsSingle();

            InstallSceneBindings(injectableMonoBehaviours);
            InstallInstallers();
        }
        public override void Setup()
        {
            base.Setup();

            SignalBusInstaller.Install(Container);
            ZenjectManagersInstaller.Install(Container);
        }
        public void TestByMethod()
        {
            Container.Bind <FooFacade>().FromSubContainerResolve()
            .ByMethod(InstallFoo).WithKernel().AsSingle();

            ZenjectManagersInstaller.Install(Container);
            Container.ResolveRoots();

            var facade = Container.Resolve <FooFacade>();

            Assert.That(!facade.Foo.WasInitialized);
            Container.Resolve <InitializableManager>().Initialize();
            Assert.That(facade.Foo.WasInitialized);
        }
        public void TestByInstallerCustomOrder()
        {
            GlobalInitializeCount = 0;

            Container.BindInterfacesAndSelfTo <Bar>().AsSingle();
            Container.Bind <FooFacade>().FromSubContainerResolve()
            .ByInstaller <FooInstaller>().WithKernel <FooKernel>().AsSingle();

            ZenjectManagersInstaller.Install(Container);
            Container.ResolveRoots();

            var facade = Container.Resolve <FooFacade>();

            Assert.That(!facade.Foo.WasInitialized);
            Container.Resolve <InitializableManager>().Initialize();
            Assert.That(facade.Foo.WasInitialized);

            Assert.IsEqual(Container.Resolve <Bar>().InitializeCount, 1);
            Assert.IsEqual(facade.Foo.InitializeCount, 2);
        }
        protected virtual void Initialize()
        {
            Assert.IsNull(_container);

            _container = new DiContainer(new[] { StaticContext.Container });

            // Make sure we don't create any game objects since editor windows don't have a scene
            _container.AssertOnNewGameObjects = true;

            ZenjectManagersInstaller.Install(_container);

            _container.Bind <Kernel>().AsSingle();
            _container.Bind <GuiRenderableManager>().AsSingle();
            _container.BindInstance(this);

            InstallBindings();

            _container.QueueForInject(this);
            _container.ResolveRoots();

            _kernel.Initialize();
        }
예제 #6
0
 public void CommonInstall()
 {
     ZenjectManagersInstaller.Install(Container);
     SignalBusInstaller.Install(Container);
     Container.Inject(this);
 }