private IEnumerable <object> ResolveConstructorParams(RegisteredObject registeredObject) { // Try to get the greediest constructor var constructorInfo = registeredObject.ConcreteType.GetConstructors().OrderByDescending(c => c.GetParameters().Length).FirstOrDefault(); if (constructorInfo == null) { yield return(new List <object>()); } foreach (var parameter in constructorInfo.GetParameters()) { yield return(ResolveObject(parameter.ParameterType)); } }
private object GetInstance(RegisteredObject registeredObject) { var parameters = ResolveConstructorParams(registeredObject); return(registeredObject.GetInstance(parameters.ToArray())); }