public static void BindExecutionOrder( this DiContainer container, Type type, int order) { Assert.That(type.DerivesFrom <ITickable>() || type.DerivesFrom <IInitializable>() || type.DerivesFrom <IDisposable>() || type.DerivesFrom <IFixedTickable>() || type.DerivesFrom <ILateTickable>(), "Expected type '{0}' to derive from one or more of the following interfaces: ITickable, IInitializable, ILateTickable, IFixedTickable, IDisposable", type.Name()); if (type.DerivesFrom <ITickable>()) { container.BindTickableExecutionOrder(type, order); } if (type.DerivesFrom <IInitializable>()) { container.BindInitializableExecutionOrder(type, order); } if (type.DerivesFrom <IDisposable>()) { container.BindDisposableExecutionOrder(type, order); } if (type.DerivesFrom <IFixedTickable>()) { container.BindFixedTickableExecutionOrder(type, order); } if (type.DerivesFrom <ILateTickable>()) { container.BindLateTickableExecutionOrder(type, order); } }
public static void BindSignal <TSignal>(this DiContainer container) where TSignal : ISignal { container.Bind(typeof(TSignal), typeof(IDisposable)).To <TSignal>().AsSingle(); // Execute at the very end to ensure that everyone has unsubscribed before // we verify that our listener count is empty container.BindDisposableExecutionOrder <TSignal>(int.MinValue); }
public static void BindSignal <TSignal>(this DiContainer container, string identifier) where TSignal : ISignal { container.Bind <TSignal>().WithId(identifier).AsSingle(identifier); container.Bind <IDisposable>().To <TSignal>().FromResolve(identifier); // Execute at the very end to ensure that everyone has unsubscribed before // we verify that our listener count is empty container.BindDisposableExecutionOrder <TSignal>(int.MinValue); }
public static void ApplyBindSettings( SubContainerCreatorBindInfo subContainerBindInfo, DiContainer subContainer) { if (subContainerBindInfo.DefaultParentName != null) { #if !ZEN_TESTS_OUTSIDE_UNITY && !NOT_UNITY3D var defaultParent = new GameObject( subContainerBindInfo.DefaultParentName); defaultParent.transform.SetParent( subContainer.InheritedDefaultParent, false); subContainer.DefaultParent = defaultParent.transform; subContainer.Bind <IDisposable>() .To <DefaultParentObjectDestroyer>().AsCached().WithArguments(defaultParent); // Always destroy the default parent last so that the non-monobehaviours get a chance // to clean it up if they want to first subContainer.BindDisposableExecutionOrder <DefaultParentObjectDestroyer>(int.MinValue); #endif } if (subContainerBindInfo.CreateKernel) { var parentContainer = subContainer.ParentContainers.OnlyOrDefault(); Assert.IsNotNull(parentContainer, "Could not find unique container when using WithKernel!"); if (subContainerBindInfo.KernelType != null) { parentContainer.Bind(typeof(Kernel).Interfaces()).To(subContainerBindInfo.KernelType) .FromSubContainerResolve() .ByInstance(subContainer).AsCached(); subContainer.Bind(subContainerBindInfo.KernelType).AsCached(); } else { parentContainer.BindInterfacesTo <Kernel>().FromSubContainerResolve() .ByInstance(subContainer).AsCached(); subContainer.Bind <Kernel>().AsCached(); } } }
public static void BindDisposableExecutionOrder <T>( this DiContainer container, int order) where T : IDisposable { container.BindDisposableExecutionOrder(typeof(T), order); }