public static void BindPriority( DiContainer container, Type tickableType, int priorityCount) { Assert.That(tickableType.DerivesFrom <ITickable>(), "Expected type '{0}' to derive from ITickable", tickableType.Name()); container.Bind <Tuple <Type, int> >().To( Tuple.New(tickableType, priorityCount)).WhenInjectedInto <TickableManager>(); }
public static void BindPriority( DiContainer container, Type disposableType, int priorityCount) { Assert.That(disposableType.DerivesFrom <IDisposable>(), "Expected type '{0}' to derive from IDisposable", disposableType.Name()); container.Bind <Tuple <Type, int> >().To( Tuple.New(disposableType, priorityCount)).WhenInjectedInto <DisposablesHandler>(); }
static IEnumerable <ZenjectResolveException> ValidateInstallers(CompositionRoot compRoot) { var container = new DiContainer(); container.Bind <CompositionRoot>().ToSingle(compRoot); foreach (var installer in compRoot.Installers) { if (installer == null) { yield return(new ZenjectResolveException( "Found null installer in properties of Composition Root")); yield break; } installer.Container = container; container.Bind <IInstaller>().To(installer); } foreach (var error in ZenUtil.ValidateInstallers(container)) { yield return(error); } // Also make sure we can fill in all the dependencies in the built-in scene foreach (var monoBehaviour in compRoot.GetComponentsInChildren <MonoBehaviour>()) { if (monoBehaviour == null) { // Be nice to give more information here Debug.LogWarning("Found null MonoBehaviour in scene"); continue; } foreach (var error in container.ValidateObjectGraph(monoBehaviour.GetType())) { yield return(error); } } }
void InitContainer() { _container = new DiContainer(); // Note: This has to go first _container.Bind <CompositionRoot>().To(this); if (_extraBindingLookup != null) { _extraBindingLookup(_container); _extraBindingLookup = null; } }
public static DiContainer CreateContainer(bool allowNullBindings, GameObject gameObj) { Assert.That(allowNullBindings || gameObj != null); var container = new DiContainer(); container.AllowNullBindings = allowNullBindings; container.Bind <IInstaller>().ToSingle <StandardUnityInstaller>(); container.Bind <GameObject>().To(gameObj) .WhenInjectedInto <StandardUnityInstaller>(); container.InstallInstallers(); Assert.That(!container.HasBinding <IInstaller>()); foreach (var installer in GetGlobalInstallers()) { FieldsInjecter.Inject(container, installer); container.Bind <IInstaller>().To(installer); container.InstallInstallers(); Assert.That(!container.HasBinding <IInstaller>()); } return(container); }
void Register() { if (Installers.IsEmpty()) { Debug.LogError("No installers found while initializing CompositionRoot"); return; } foreach (var installer in Installers) { // The installers that are part of the scene are monobehaviours // and therefore were not created via Zenject and therefore do // not have their members injected // At the very least they will need the container injected but // they might also have some configuration passed from another // scene FieldsInjecter.Inject(_container, installer); _container.Bind <IInstaller>().To(installer); } ZenUtil.InstallInstallers(_container); }
protected static BindingConditionSetter AddBindingInternal <TDerived>(DiContainer container, TKey key) where TDerived : TBase { return(container.Bind <Tuple <TKey, Type> >().To(Tuple.New(key, typeof(TDerived)))); }
public static void AddBinding <TDerived>(DiContainer container, TKey key) where TDerived : TBase { container.Bind <Tuple <TKey, Type> >().To(Tuple.New(key, typeof(TDerived))).WhenInjectedInto <KeyedFactory <TBase, TKey> >(); }
public void Setup() { _container = new DiContainer(); _container.Bind <TaskUpdater <ITickable> >().ToSingle(new TaskUpdater <ITickable>(t => t.Tick())); }
public static void BindTickable <TTickable>(DiContainer container, int priority) where TTickable : ITickable { container.Bind <ITickable>().ToSingle <TTickable>(); BindTickablePriority <TTickable>(container, priority); }
public static void BindTickablePriority <TTickable>(DiContainer container, int priority) { container.Bind <Tuple <Type, int> >().To(Tuple.New(typeof(TTickable), priority)); }