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 BindInitializableExecutionOrder <T>(
     this DiContainer container, int order)
     where T : IInitializable
 {
     container.BindInitializableExecutionOrder(typeof(T), order);
 }