/// <summary> /// Process all files in the directory passed in, recurse on any directories that are found, /// and process the files they contain. /// </summary> /// <param name="targetDirectory"> The target directory. </param> private static void ProcessDirectory(string targetDirectory) { // Process the list of files found in the directory. string[] fileEntries = Directory.GetFiles(targetDirectory); foreach (string fileName in fileEntries) { FileInfo file = new FileInfo(fileName); if (file.Name.Contains("object-meta")) { Console.WriteLine("Processed object from File: '{0}'.", fileName); // If all information has been gather for the Salesforce object then add it to // the list if (completedObject == true) { sFObjectsList.Add(sFObject); completedObject = false; Console.WriteLine(sFObject.ToString()); } //Read the first XML file to gather the objects base level information sFObject = CreateSfObject(file); break; } else if (file.Name.Contains("recordType-meta")) { //If the Salesforce object has a record type then add it to the current object sFObject = getSfObjectRecordTypes(file, sFObject); } else if (file.Name.Contains("field-meta")) { //If the Salesforce object has fields then add it to the current object sFObject = getSfObjectFieldProperties(file, sFObject); //When the field level is reached then there are no more level to the object, so marked as completed completedObject = true; } } // Recurse into subdirectories of this directory. string[] subdirectoryEntries = Directory.GetDirectories(targetDirectory); foreach (string subdirectory in subdirectoryEntries) { ProcessDirectory(subdirectory); } }