/// 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); }
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; }
/// 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); }
/// 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; }