internal static IEnumerable <TestData> Create(MethodInfo testMethod, object testObject, IMemberAccessor[] accessors) { if (accessors.Length == 1) { return(Create(testMethod, testObject, accessors[0])); } if (testMethod.GetParameters().Length != accessors.Length) { throw SpecFailure.MultiAccessorsTheoryParameterMismatch(); } // TODO It would be better to enforce IEnumerable instead of failing with cast var elements = accessors .Select(t => ((IEnumerable)t.GetValue(testObject)).Cast <object>().ToArray()) .ToList(); var actualData = Combinatorial(elements) .Select(t => new TestData(t)); return(actualData); }