Reko.Core.Serialization.ProjectSaver.Serialize C# (CSharp) Méthode

Serialize() public méthode

Given a Project serializes it into a Project_v4.
public Serialize ( string projectAbsPath, Project project ) : Project_v4
projectAbsPath string
project Project
Résultat 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;
        }

Usage Example

Exemple #1
0
        /// <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;
        }