protected internal virtual string SerializeSection(ConfigurationElement parentElement, string name, ConfigurationSaveMode saveMode) { if (((base.CurrentConfiguration != null) && (base.CurrentConfiguration.TargetFramework != null)) && !this.ShouldSerializeSectionInTargetVersion(base.CurrentConfiguration.TargetFramework)) { return(string.Empty); } ConfigurationElement.ValidateElement(this, null, true); ConfigurationElement element = ConfigurationElement.CreateElement(base.GetType()); element.Unmerge(this, parentElement, saveMode); StringWriter w = new StringWriter(CultureInfo.InvariantCulture); XmlTextWriter writer = new XmlTextWriter(w) { Formatting = Formatting.Indented, Indentation = 4, IndentChar = ' ' }; element.DataToWriteInternal = saveMode != ConfigurationSaveMode.Minimal; if ((base.CurrentConfiguration != null) && (base.CurrentConfiguration.TargetFramework != null)) { base._configRecord.SectionsStack.Push(this); } element.SerializeToXmlElement(writer, name); if ((base.CurrentConfiguration != null) && (base.CurrentConfiguration.TargetFramework != null)) { base._configRecord.SectionsStack.Pop(); } writer.Flush(); return(w.ToString()); }