/// <summary> /// Resolves the specified abstract type. /// </summary> /// <param name="abstractType">Type of the abstract.</param> /// <param name="isProxy">if set to <c>true</c> [is proxy].</param> /// <returns>System.Object.</returns> /// <exception cref="System.Exception"></exception> /// <remarks>Rachistructure</remarks> private object Resolve(string registrationNames, bool isProxy) { if (_instanceMap.ContainsKey(registrationNames)) { Type concreteType = _instanceMap[registrationNames]; ConstructorInfo firstConstructor = concreteType.GetConstructors()[0]; ParameterInfo[] parameters = firstConstructor.GetParameters(); object resolvedConcreteInstance = null; if (parameters.Length > 0) { object[] resolvedParameters = new object[parameters.Length]; for (int i = 0; i < parameters.Length; i++) { ParameterInfo parameter = parameters[i]; Type parameterType = parameter.ParameterType; // parametre türü nedir? object parameterInstance = Resolve("parameterType", isProxy); resolvedParameters[i] = parameterInstance; } resolvedConcreteInstance = firstConstructor.Invoke(resolvedParameters); } else { resolvedConcreteInstance = Activator.CreateInstance(concreteType); } if (isProxy) { object proxy = ProxyBuilder.CreateProxyObject(ProxyKind.RealProxy, concreteType, resolvedConcreteInstance); return(proxy); } return(resolvedConcreteInstance); } throw new Exception(string.Format("{0} do not resolved because {1} not registered on this container!")); }