public Serialize ( string projectAbsPath, Project project ) : Project_v4 | ||
projectAbsPath | string | |
project | Project | |
Результат | Project_v4 |
public Project_v4 Serialize(string projectAbsPath, Project project)
{
var inputs = new List<ProjectFile_v3>();
inputs.AddRange(project.Programs.Select(p => VisitProgram(projectAbsPath, p)));
inputs.AddRange(project.MetadataFiles.Select(m => VisitMetadataFile(projectAbsPath, m)));
var sp = new Project_v4
{
// ".Single()" because there can be only one Architecture and Platform, realistically.
ArchitectureName = project.Programs.Select(p => p.Architecture.Name).Distinct().SingleOrDefault(),
PlatformName = project.Programs.Select(p => p.Platform.Name).Distinct().SingleOrDefault(),
Inputs = inputs
};
return sp;
}
/// <summary> /// Saves the project. /// </summary> /// <returns>False if the user cancelled the save, true otherwise.</returns> public bool Save() { if (decompilerSvc.Decompiler == null) return true; if (string.IsNullOrEmpty(this.ProjectFileName)) { string newName = PromptForFilename( Path.ChangeExtension( decompilerSvc.Decompiler.Project.Programs[0].Filename, Project_v3.FileExtension)); if (newName == null) return false; ProjectFileName = newName; mru.Use(newName); } var fsSvc = Services.RequireService<IFileSystemService>(); using (var xw = fsSvc.CreateXmlWriter(ProjectFileName)) { var saver = new ProjectSaver(sc); var sProject = saver.Serialize(ProjectFileName, decompilerSvc.Decompiler.Project); saver.Save(sProject, xw); } return true; }