private object GetInstance(RegisteredImplementation registeredImplementation) { object instance; if (registeredImplementation.isSinglton == false || registeredImplementation.SingletonInstance == null) { var parameters = ResolveConstructorParameters(registeredImplementation); instance = registeredImplementation.CreateInstance(parameters.ToArray()); } else { instance = registeredImplementation.SingletonInstance; } return(instance); }
private IEnumerable <object> ResolveConstructorParameters(RegisteredImplementation registeredImplementation) { var constructorInfo = registeredImplementation.ImplementationType.GetConstructors().First(); return(constructorInfo.GetParameters().Select(parameter => ResolveObject(parameter.ParameterType))); }