private IEnumerable <object> GetCTorParameters(RegisteredEntry obj) { var ctors = obj.ConcreteType.GetConstructors(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Static).First(); foreach (var param in ctors.GetParameters()) { yield return(ResolveObject(param.ParameterType)); } }
private object GetInstance(RegisteredEntry obj) { if (obj.Instance == null || obj.lifecycle == LifeCycle.Transient) { var ctorParams = GetCTorParameters(obj); var sanitizedCtorParams = (ctorParams == null || ctorParams.Count() == 0) ? null : ctorParams.ToArray(); obj.CreateInstance(sanitizedCtorParams); } return(obj.Instance); }