public IEnumerable <object> GetArguments(Type[] parameterTypes, object target) { for (int i = 0; i < parameterTypes.Length; ++i) { if (i == 0 && target != null) { if (parameterTypes[0].IsInstanceOfType(target) == false) { throw new ArgumentException("Target not assignable to first parameter", nameof(target)); } yield return(target); } else { object argument = _serviceCreator.Create(parameterTypes[i], _serviceLocator.Container); if (argument != null) { yield return(argument); } else { throw new InvalidOperationException("Could not create argument of type " + parameterTypes[i].FullName); } } } }
private T Create <T>() { return((T)_serviceCreator.Create(typeof(T), this)); }