private IEnumerable <MetadataObjectContext> GetMetadataContexts( IKey baseKey, IList <IFastMemberWithValues> dependendArguments, object[][] ctorValuesCollections, IReadOnlyList <int> sortedToUnsorted, ITestDataGenerator testDataGenerator) { var dependendArgumentMapping = new List <Tuple <int, IKey> >(); for (var i = 0; i < dependendArguments.Count; i++) { var argument = dependendArguments[i]; var argumentKey = baseKey.CreateKey(argument); var argumentIndex = sortedToUnsorted[i]; dependendArgumentMapping.Add(new Tuple <int, IKey> (argumentIndex, argumentKey)); } foreach (var valueCollection in ctorValuesCollections) { var context = new MetadataObjectContext(testDataGenerator); foreach (var dependendArgument in dependendArgumentMapping) { context.Add(dependendArgument.Item2, valueCollection[dependendArgument.Item1]); } yield return(context); } }
public IEnumerable <IFastMemberWithValues> Sort(IEnumerable <IFastMemberWithValues> members, IKey baseKey) { return (members.Select(m => new { Key = baseKey.CreateKey(m), Value = m }) .OrderBy(keyValue => GetIndexForKey(keyValue.Key)) .Select(keyValue => keyValue.Value)); }
private IEnumerable <MetadataObjectContext> GetMetadataContexts( IKey baseKey, IEnumerable <IFastMemberWithValues> dependendMembers, IList <object> instances) { var instanceToContext = new Dictionary <object, MetadataObjectContext>(); foreach (var member in dependendMembers) { var memberKey = baseKey.CreateKey(member); foreach (var instance in instances) { if (!instanceToContext.ContainsKey(instance)) { instanceToContext[instance] = new MetadataObjectContext(this); } instanceToContext[instance].Add(memberKey, member.GetValue(instance)); } } return(instanceToContext.Select(i => i.Value)); }