Exemple #1
0
        private object GetInstance(RegisteredObject registeredObject)
        {
            object instance = registeredObject.SingletonInstance;

            if (instance == null)
            {
                var parameters = ResolveConstructorParameters(registeredObject);
                instance = registeredObject.CreateInstance(parameters.ToArray());
            }
            return(instance);
        }
        private object ResolveConstructor(RegisteredObject resolvingType)
        {
            object result = null;

            foreach (var constructor in resolvingType.ConcreteType.GetConstructors().OrderBy(c => c.GetParameters().Count()))
            {
                var constructorParams = constructor.GetParameters();
                if (!constructorParams.Select(p => p.ParameterType).Except(_registeredTypes.Keys).Any())
                {
                    var paramInfos = constructorParams.Select(c => Resolve(c.ParameterType)).ToArray();
                    result = resolvingType.CreateInstance(paramInfos);
                }
            }
            return(result);
        }
Exemple #3
0
            private object GetInstance(RegisteredObject registeredObject,
                                       LifeCycle preferredLifeCycle = LifeCycle.Default,
                                       params object[] parameters)
            {
                var objectLifeCycle = preferredLifeCycle != LifeCycle.Default
                    ? preferredLifeCycle
                    : registeredObject.LifeCycle;


                object obj = null;

                if (registeredObject.Instance == null ||
                    objectLifeCycle == LifeCycle.Default ||
                    objectLifeCycle == LifeCycle.Transient)
                {
                    object[] paramArray = null;

                    if (parameters == null || parameters.Length == 0)
                    {
                        var param = ResolveConstructorParameters(registeredObject);
                        paramArray = param == null ? null : param.ToArray();
                    }

                    obj = registeredObject.CreateInstance(context, objectLifeCycle, paramArray);

                    Debug.Log("Successfully resolved " + registeredObject.TypeToResolve + " as " +
                              registeredObject.ConcreteType + " by " + objectLifeCycle + " from new object");
                    return(obj);
                }
                else
                {
                    Debug.Log("Successfully resolved " + registeredObject.TypeToResolve + " as " +
                              registeredObject.ConcreteType + " by " + objectLifeCycle + " from cached instance");

                    return(registeredObject.Instance);
                }
            }