public void Process(string fileName, InputConfiguration configuration) { var files = this.GetFileNames(fileName, configuration); var objectTuples = new List <Tuple <ObjectBase, ObjectDefinitionBase> >(); foreach (var file in files) { var objectContainers = JsonConvert.DeserializeObject <List <ObjectContainer> >(File.ReadAllText(file)); foreach (var objectContainer in objectContainers) { var objectDefinition = ObjectProviderFactory.GetProvider(this.ServiceProvider, objectContainer.Object).Create(objectContainer.Object); this.Definitions.Add(objectDefinition); objectTuples.Add(new Tuple <ObjectBase, ObjectDefinitionBase>(objectContainer.Object, objectDefinition)); } } foreach (var objectTuple in objectTuples) { ObjectProviderFactory.GetProvider(this.ServiceProvider, objectTuple.Item1).Process(objectTuple.Item2, objectTuple.Item1, this); } }