private void InstallBindingsToSubContainer(DiContainer subContainer) { subContainer.BindInstance(new InitialState(ShouldRenderInitialValue, InitialValue)).AsCached(); subContainer.BindInterfacesTo <NumberRendererUseCase>().AsCached(); subContainer.BindInterfacesTo <InitializationController>().AsCached(); switch (RendererType) { case RendererType.SpriteRenderer: subContainer.BindInterfacesTo <NumberRenderingPresenter <SpriteRenderer, Sprite> >().AsCached(); subContainer.BindInterfacesTo <NumberRendererForSpriteRenderer>().FromNewComponentOn(gameObject).AsCached(); subContainer.Bind <IList <SpriteRenderer> >().FromInstance(Renderers.Select(x => x.GetComponent <SpriteRenderer>()).ToList()).AsCached(); subContainer.BindInstance(Sprites).AsCached(); break; case RendererType.UIImage: subContainer.BindInterfacesTo <NumberRenderingPresenter <Image, Sprite> >().AsCached(); subContainer.BindInterfacesTo <NumberRendererForUIImage>().FromNewComponentOn(gameObject).AsCached(); subContainer.Bind <IList <Image> >().FromInstance(Renderers.Select(x => x.GetComponent <Image>()).ToList()).AsCached(); subContainer.BindInstance(Sprites).AsCached(); break; case RendererType.UIRawImage: subContainer.BindInterfacesTo <NumberRenderingPresenter <RawImage, Texture> >().AsCached(); subContainer.BindInterfacesTo <NumberRendererForUIRawImage>().FromNewComponentOn(gameObject).AsCached(); subContainer.Bind <IList <RawImage> >().FromInstance(Renderers.Select(x => x.GetComponent <RawImage>()).ToList()).AsCached(); subContainer.BindInstance(Textures).AsCached(); break; default: throw new ArgumentOutOfRangeException(); } subContainer.BindInstance(EmptyDigitType).AsCached(); subContainer.BindInstance(ShouldRenderInitialValue).AsCached(); subContainer.BindInstance(InitialValue).AsCached(); }