示例#1
0
        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);
                    }
                }
            }
        }
示例#2
0
 private T Create <T>()
 {
     return((T)_serviceCreator.Create(typeof(T), this));
 }