/// <summary> /// Finds all creatable instances for each of the parameter types on the <paramref name="methodUnderTest"/>. /// </summary> public override IEnumerable <object[]> GetData(MethodInfo methodUnderTest) { var parameters = methodUnderTest.GetParameters( ); var parameterCreators = parameters.Select((p) => TypeCreator.GetCreators(p.ParameterType).AsEnumerable( )); bool needsSta = Thread.CurrentThread.GetApartmentState( ) != ApartmentState.STA && methodUnderTest.GetCustomAttributes <FactAttribute>( ).Any(IsStaTestAttribute); IEnumerable <object[]> instanceData; if (!needsSta) { instanceData = GetDataCore(parameterCreators); } else { var task = TestCaseExtensions.RunAsync(() => GetDataCore(parameterCreators).ToArray( ), ApartmentState.STA); instanceData = task.Result; } return(instanceData); }