/// <summary> /// 获取生命周期 /// </summary> /// <param name="lifetimeManagerType"></param> /// <returns></returns> public static LifetimeManager GetLifetimeManager(LifetimeManagerType lifetimeManagerType) { Current.RegisterType <IEventBus, EventBus>(new TransientLifetimeManager()); //Current.RegisterType<IEventBus, EventBus>(new PerHttpLifetimeManager()); Type type; if (!LifetimeManager.TryGetValue(lifetimeManagerType, out type)) { return(new TransientLifetimeManager()); } return((LifetimeManager)Activator.CreateInstance(type)); //switch (lifetimeManagerType) //{ // case LifetimeManagerType.Transient: // return new TransientLifetimeManager(); // case LifetimeManagerType.ContainerControlled: // return new ContainerControlledLifetimeManager(); // case LifetimeManagerType.Hierarchica: // return new HierarchicalLifetimeManager(); // case LifetimeManagerType.Externally: // return new ExternallyControlledLifetimeManager(); // case LifetimeManagerType.PerThread: // return new PerThreadLifetimeManager(); // case LifetimeManagerType.PerResolve: // return new PerResolveLifetimeManager(); // default: // return new PerResolveLifetimeManager(); //} }
/// <summary> /// 获取生命周期 /// </summary> /// <param name="lifetimeManagerType"></param> /// <returns></returns> private static LifetimeManager GetLifetimeManager(LifetimeManagerType lifetimeManagerType) { switch (lifetimeManagerType) { case LifetimeManagerType.Transient: return(new TransientLifetimeManager()); case LifetimeManagerType.ContainerControlled: return(new ContainerControlledLifetimeManager()); case LifetimeManagerType.Hierarchica: return(new HierarchicalLifetimeManager()); case LifetimeManagerType.Externally: return(new ExternallyControlledLifetimeManager()); case LifetimeManagerType.PerThread: return(new PerThreadLifetimeManager()); case LifetimeManagerType.PerResolve: return(new PerResolveLifetimeManager()); default: return(new TransientLifetimeManager()); } }
public static void SetLifetimeManagerDict <T>(LifetimeManagerType lifetimeManagerType) { LifetimeManager.AddOrUpdate(lifetimeManagerType, key => typeof(T), (key, value) => typeof(T)); }