public IEnumerable<object> GetArguments(ITestMethodContext context)
{
if (context == null)
throw new ArgumentNullException("context");
var parameters = context.ActualMethod.GetParameters();
var explicitArguments = this.arguments.ToArray();
if (explicitArguments.Length > parameters.Length)
throw new InvalidOperationException(string.Format(
CultureInfo.CurrentCulture,
"Expected {0} parameters, got {1} parameters",
parameters.Length,
explicitArguments.Length));
if (explicitArguments.Length == parameters.Length)
return explicitArguments;
var fixture = this.factory.Create(context);
var autoArguments = parameters.Skip(explicitArguments.Length)
.Select(p => fixture.CreateAnonymous(p));
return explicitArguments.Concat(autoArguments);
}