ICSharpCode.ILSpy.CSharpLanguage.WriteCodeFilesInProject C# (CSharp) Method

WriteCodeFilesInProject() private method

private WriteCodeFilesInProject ( Mono.Cecil.ModuleDefinition module, DecompilationOptions options, HashSet directories ) : string>>.IEnumerable
module Mono.Cecil.ModuleDefinition
options DecompilationOptions
directories HashSet
return string>>.IEnumerable
		IEnumerable<Tuple<string, string>> WriteCodeFilesInProject(ModuleDefinition module, DecompilationOptions options, HashSet<string> directories)
		{
			var files = module.Types.Where(t => IncludeTypeWhenDecompilingProject(t, options)).GroupBy(
				delegate(TypeDefinition type) {
					string file = cleanupName(type.Name) + this.FileExtension;

				

					if (string.IsNullOrEmpty(type.Namespace)) {
						return file;
					} else {
						string dir = cleanupName(type.Namespace);
					if (directories.Add(dir))
					{
						CreateDirSafely(Path.Combine(options.SaveAsProjectDirectory, dir));
					}
					return Path.Combine(dir, file);
				}
			}, StringComparer.OrdinalIgnoreCase).ToList();
			
 			AstMethodBodyBuilder.ClearUnhandledOpcodes();
//			Parallel.ForEach(
//				files,
//				new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount },
//			delegate(IGrouping<string, TypeDefinition> file) 
			foreach(IGrouping<string, TypeDefinition> file in files)
			{



				using (StreamWriter w = new StreamWriter(Path.Combine(options.SaveAsProjectDirectory, file.Key))) {
					AstBuilder codeDomBuilder = CreateAstBuilder(options, currentModule: module);
					foreach (TypeDefinition type in file) {
						codeDomBuilder.AddType(type);
					}
					codeDomBuilder.RunTransformations(transformAbortCondition);
					codeDomBuilder.GenerateCode(new PlainTextOutput(w));
				}
			}
			//);
			AstMethodBodyBuilder.PrintNumberOfUnhandledOpcodes();
			return files.Select(f => Tuple.Create("Compile", f.Key)).Concat(WriteAssemblyInfo(module, options, directories));
		}
		#endregion