Example #1
0
 /// Generate a Singleton instance
 protected object singletonOf(IInjectionBinding binding, object[] args)
 {
     if (binding.value != null)
     {
         if (binding.value.GetType().IsInstanceOfType(typeof(Type)))
         {
             object o = createFromValue(binding.value, args);
             if (o == null)
             {
                 return(null);
             }
             binding.SetValue(o);
         }
         else
         {
             //no-op. We already have a binding value!
         }
     }
     else
     {
         object generateImplicitValue = generateImplicit((binding.key as object[])[0], args);
         if (generateImplicitValue != null)
         {
             binding.SetValue(generateImplicitValue);
         }
         else
         {
             UnityEngine.Debug.LogError("IInjectionBinding generateImplicit object == NULL");
         }
     }
     return(binding.value);
 }
Example #2
0
        private object GetInjectionValue(object instance, IInjectionBinding binding, IInjectionInfo injectionInfo)
        {
            switch (binding.BindingType)
            {
            case InjectionBindingType.InstanceProvider when binding.InjectionMode == InjectionMode.Factory:
            {
                var instanceProvider = binding.Value is Type type
                                               ? (IInjectionProvider)Activator.CreateInstance(type)
                                               : (IInjectionProvider)binding.Value;

                if (binding.ToConstruct && !CheckIsConstructed(instanceProvider))
                {
                    Construct(instanceProvider, true);
                    binding.SetValue(instanceProvider);
                    MarkConstructed(binding.Value);
                }

                return(instanceProvider.TakeInstance(instance, injectionInfo.Attribute));
            }

            case InjectionBindingType.Value when binding.InjectionMode == InjectionMode.Singleton:
            {
                if (binding.ToConstruct && !CheckIsConstructed(binding.Value))
                {
                    Construct(binding.Value, true);
                    MarkConstructed(binding.Value);
                }

                return(binding.Value);
            }

            case InjectionBindingType.Type when binding.InjectionMode == InjectionMode.Factory:
            {
                var value = Activator.CreateInstance((Type)binding.Value);
                Construct(value, true);
                return(value);
            }

            case InjectionBindingType.Type when binding.InjectionMode == InjectionMode.Singleton:
            {
                if (binding.ToConstruct && !CheckIsConstructed(binding.Value))
                {
                    var value = Activator.CreateInstance((Type)binding.Value);
                    Construct(value, true);
                    binding.SetValue(value);
                    MarkConstructed(binding.Value);
                }

                return(binding.Value);
            }

            default:
                throw new InjectionException(InjectionExceptionType.ValueNotProvided);
            }
        }
		/// Generate a Singleton instance
		protected object singletonOf(IInjectionBinding binding, object[] args)
		{
			if (binding.value != null)
			{
				if (binding.value.GetType().IsInstanceOfType(typeof(Type)))
				{
					binding.SetValue(createFromValue(binding.value, args));
				}
				else
				{
					//no-op. We already have a binding value!
				}
			}
			else
			{
				binding.SetValue(generateImplicit((binding.key as object[])[0], args));
			}
			return binding.value;
		}
Example #4
0
 /// Generate a Singleton instance
 protected object singletonOf(IInjectionBinding binding, object[] args)
 {
     if (binding.value != null)
     {
         if (binding.value.GetType().IsInstanceOfType(typeof(Type)))
         {
             binding.SetValue(createFromValue(binding.value, args));
         }
         else
         {
             //no-op. We already have a binding value!
         }
     }
     else
     {
         binding.SetValue(generateImplicit((binding.key as object[])[0], args));
     }
     return(binding.value);
 }
Example #5
0
        /// Generate a Singleton instance
        private object singletonOf(IInjectionBinding binding, object[] args)
        {
            if (binding.value != null)
            {
                if (binding.value.GetType().IsInstanceOfType(typeof(Type)))
                {
                    var o = createFromValue(binding.value, args);
                    if (o == null)
                    {
                        return(null);
                    }
                    binding.SetValue(o);
                }
            }
            else
            {
                binding.SetValue(generateImplicit((binding.key as object[])[0], args));
            }

            return(binding.value);
        }
 /// Generate a Singleton instance
 protected object singletonOf(IInjectionBinding binding, object[] args)
 {
     if (binding.value != null)
     {
     #if NETFX_CORE
         if (chk.IsInstanceOfType(typeof(Type), binding.value))
     #else
         if (binding.value.GetType().IsInstanceOfType(typeof(Type)))
     #endif
         {
             object o = createFromValue (binding.value, args);
             if (o == null)
                 return null;
             binding.SetValue(o);
         }
         else
         {
             //no-op. We already have a binding value!
         }
     }
     else
     {
         binding.SetValue(generateImplicit((binding.key as object[])[0], args));
     }
     return binding.value;
 }