Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <param name="contract"></param>
        /// <param name="factory"></param>
        /// <param name="lifestyleType"></param>
        public ComponentInfo(string id, Type contract, Func <object> factory, LifestyleFlags lifestyleType)
        {
            Guard.NotNull(contract, "contract");
            Guard.NotNull(factory, "factory");

            contracts.Add(contract);
            ContractService.GetContracts(contract, contracts);

            Id = id;
            if (string.IsNullOrEmpty(id))
            {
                Id = factory.ToString() + "/" + contract.FullName;
            }

            if (contract.IsOpenGenericType())
            {
                Lifestyle = LifestyleType.GetGenericLifestyle(lifestyleType);
            }
            else
            {
                Lifestyle = LifestyleType.GetLifestyle(lifestyleType);
            }

            Activator = ActivatorType.Factory;
            Factory   = factory;
            Name      = Id;
        }
Example #2
0
 internal static LifestyleFlags GetLifestyle(LifestyleFlags lifestyle)
 {
     if (lifestyle == LifestyleFlags.GenericSingleton)
         return LifestyleFlags.Singleton;
     if (lifestyle == LifestyleFlags.GenericTransient)
         return LifestyleFlags.Transient;
     if (lifestyle == LifestyleFlags.GenericThread)
         return LifestyleFlags.Thread;
     return lifestyle;
 }
 /// <inheritdoc/>
 public ILifestyleManager Create(LifestyleFlags type)
 {
     switch (type)
     {
         case LifestyleFlags.Singleton: return new SingletontLifestyleManager();
         case LifestyleFlags.Transient: return new TransientLifestyleManager();
         case LifestyleFlags.Thread: return new ThreadLifestyleManager();
         case LifestyleFlags.GenericSingleton: return new GenericSingletonLifestyleManager();
         case LifestyleFlags.GenericTransient: return new GenericTransientLifestyleManager();
         default: return new GenericThreadLifestyleManager();
     }
 }
Example #4
0
 internal static LifestyleFlags GetLifestyle(LifestyleFlags lifestyle)
 {
     if (lifestyle == LifestyleFlags.GenericSingleton)
     {
         return(LifestyleFlags.Singleton);
     }
     if (lifestyle == LifestyleFlags.GenericTransient)
     {
         return(LifestyleFlags.Transient);
     }
     if (lifestyle == LifestyleFlags.GenericThread)
     {
         return(LifestyleFlags.Thread);
     }
     return(lifestyle);
 }
        /// <inheritdoc/>
        public ILifestyleManager Create(LifestyleFlags type)
        {
            switch (type)
            {
            case LifestyleFlags.Singleton: return(new SingletontLifestyleManager());

            case LifestyleFlags.Transient: return(new TransientLifestyleManager());

            case LifestyleFlags.Thread: return(new ThreadLifestyleManager());

            case LifestyleFlags.GenericSingleton: return(new GenericSingletonLifestyleManager());

            case LifestyleFlags.GenericTransient: return(new GenericTransientLifestyleManager());

            default: return(new GenericThreadLifestyleManager());
            }
        }
Example #6
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <param name="contract"></param>
        /// <param name="factory"></param>
        /// <param name="lifestyleType"></param>
        public ComponentInfo(string id, Type contract, Func<object> factory, LifestyleFlags lifestyleType)
        {
            Guard.NotNull(contract,"contract");
            Guard.NotNull(factory,"factory");
          
            contracts.Add(contract);
            ContractService.GetContracts(contract, contracts);

            Id = id;
            if (string.IsNullOrEmpty(id))
                Id = factory.ToString() + "/" + contract.FullName;

            if (contract.IsOpenGenericType())
                Lifestyle = LifestyleType.GetGenericLifestyle(lifestyleType);
            else
                Lifestyle = LifestyleType.GetLifestyle(lifestyleType);

            Activator = ActivatorType.Factory;
            Factory = factory;
            Name = Id;
        }
Example #7
0
        internal static IComponentInfo CreateComponentInfo(string id, Type contract, Type implementation, string activator, LifestyleFlags lifestyleType)
        {
            var info = new ComponentInfo(id, contract, implementation, activator, lifestyleType);

            return(info);
        }
Example #8
0
 static LifestyleType()
 {
     Default = LifestyleFlags.Singleton;
 }
Example #9
0
 IComponentExpression IComponentExpression.Lifestyle(LifestyleFlags lifestyle)
 {
     Lifestyle = lifestyle;
     return(this);
 }
Example #10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <param name="contract"></param>
        /// <param name="implementation"></param>
        /// <param name="activator"></param>
        /// <param name="lifestyleType"></param>
        public ComponentInfo(string id, Type contract, Type implementation, string activator, LifestyleFlags lifestyleType)
        {
            Guard.NotNull(implementation, "implementation");


            if (contract == null)
            {
                contract = implementation;
            }

            if (!contract.IsGenericType || contract.IsCloseGenericType())
            {
                Guard.IsTrue(contract.IsAssignableFrom(implementation));
            }

            contracts.Add(contract);
            ContractService.GetContracts(implementation, contracts);

            Id = id;
            if (string.IsNullOrEmpty(id))
            {
                Id = implementation.FullName;
            }

            if (contract.IsOpenGenericType())
            {
                Lifestyle = LifestyleType.GetGenericLifestyle(lifestyleType);
            }
            else
            {
                Lifestyle = LifestyleType.GetLifestyle(lifestyleType);
            }

            Activator = activator;
            if (string.IsNullOrEmpty(activator))
            {
                Activator = ActivatorType.Default;
            }


            Name           = Id;
            Implementation = implementation;
            if (implementation != null)
            {
                Name = implementation.FullName + "/" + contract.FullName;
            }
        }
Example #11
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="id"></param>
 /// <param name="contract"></param>
 /// <param name="implementation"></param>
 /// <param name="lifestyleType"></param>
 public ComponentInfo(string id, Type contract, Type implementation, LifestyleFlags lifestyleType) : this(id, contract, implementation, null, lifestyleType)
 {
 }
Example #12
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <param name="contract"></param>
        /// <param name="implementation"></param>
        /// <param name="activator"></param>
        /// <param name="lifestyleType"></param>
        public ComponentInfo(string id, Type contract, Type implementation, string activator, LifestyleFlags lifestyleType)
        {
            Guard.NotNull(implementation, "implementation");
           
            
            if (contract == null)
                contract = implementation;

            if (!contract.IsGenericType || contract.IsCloseGenericType())
                Guard.IsTrue(contract.IsAssignableFrom(implementation));

            contracts.Add(contract);
            ContractService.GetContracts(implementation,contracts);

            Id = id;
            if (string.IsNullOrEmpty(id))
                Id = implementation.FullName;

            if (contract.IsOpenGenericType())
                Lifestyle = LifestyleType.GetGenericLifestyle(lifestyleType);
            else
                Lifestyle = LifestyleType.GetLifestyle(lifestyleType);

            Activator = activator;
            if (string.IsNullOrEmpty(activator))
                Activator = ActivatorType.Default;


            Name = Id;
            Implementation = implementation;
            if (implementation != null)
            {
                Name = implementation.FullName + "/" + contract.FullName;
            }
        }
Example #13
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="id"></param>
 /// <param name="contract"></param>
 /// <param name="implementation"></param>
 /// <param name="lifestyleType"></param>
 public ComponentInfo(string id, Type contract, Type implementation, LifestyleFlags lifestyleType):this(id,contract,implementation,null,lifestyleType){}
 /// <summary>
 /// 通过契约类型,组件类型,组件Id以及生命周期类型来注册组件
 /// </summary>
 /// <typeparam name="TContract"></typeparam>
 /// <typeparam name="TComponent"></typeparam>
 /// <param name="registry"></param>
 /// <param name="id"></param>
 /// <param name="lifestyle"></param>
 /// <returns></returns>
 public static IServiceRegistry Register <TContract, TComponent>(this IServiceRegistry registry, string id, LifestyleFlags lifestyle) where TComponent : TContract
 {
     if (registry == null)
     {
         throw new ArgumentNullException("registry");
     }
     return(registry.Register(new ComponentInfo(id, typeof(TContract), typeof(TComponent), ActivatorType.Default, lifestyle)));
 }
Example #15
0
 static LifestyleType()
 {
     Default = LifestyleFlags.Singleton;
 }