using System.Collections;
using System.Collections.Specialized;
using System.Xml;
+using System.Text;
using System.IO;
namespace System.Configuration
internal class SectionInfo: ConfigInfo
{
bool allowLocation = true;
+ bool requirePermission = true;
+ bool restartOnExternalChanges;
ConfigurationAllowDefinition allowDefinition = ConfigurationAllowDefinition.Everywhere;
ConfigurationAllowExeDefinition allowExeDefinition = ConfigurationAllowExeDefinition.MachineToApplication;
{
}
- public SectionInfo (string sectionName, string typeName,
- bool allowLocation, ConfigurationAllowDefinition allowDefinition, ConfigurationAllowExeDefinition allowExeDefinition)
+ public SectionInfo (string sectionName, SectionInformation info)
{
Name = sectionName;
- TypeName = typeName;
- this.allowLocation = allowLocation;
- this.allowDefinition = allowDefinition;
- this.allowExeDefinition = allowExeDefinition;
+ TypeName = info.Type;
+ this.allowLocation = info.AllowLocation;
+ this.allowDefinition = info.AllowDefinition;
+ this.allowExeDefinition = info.AllowExeDefinition;
+ this.requirePermission = info.RequirePermission;
+ this.restartOnExternalChanges = info.RestartOnExternalChanges;
}
public override object CreateInstance ()
sec.SectionInformation.AllowLocation = allowLocation;
sec.SectionInformation.AllowDefinition = allowDefinition;
sec.SectionInformation.AllowExeDefinition = allowExeDefinition;
+ sec.SectionInformation.RequirePermission = requirePermission;
+ sec.SectionInformation.RestartOnExternalChanges = restartOnExternalChanges;
+ sec.SectionInformation.SetName (Name);
}
return ob;
}
ThrowException ("location is a reserved section name", reader);
break;
+ case "requirePermission":
+ string reqPerm = reader.Value;
+ bool reqPermValue = (reqPerm == "true");
+ if (!reqPermValue && reqPerm != "false")
+ ThrowException ("Invalid attribute value", reader);
+ requirePermission = reqPermValue;
+ break;
+
+ case "restartOnExternalChanges":
+ string restart = reader.Value;
+ bool restartValue = (restart == "true");
+ if (!restartValue && restart != "false")
+ ThrowException ("Invalid attribute value", reader);
+ restartOnExternalChanges = restartValue;
+ break;
+
default:
- ThrowException ("Unrecognized attribute.", reader);
+ ThrowException (String.Format ("Unrecognized attribute: {0}", reader.Name), reader);
break;
}
}
writer.WriteAttributeString ("allowDefinition", allowDefinition.ToString ());
if (allowExeDefinition != ConfigurationAllowExeDefinition.MachineToApplication)
writer.WriteAttributeString ("allowExeDefinition", allowExeDefinition.ToString ());
+ if (!requirePermission)
+ writer.WriteAttributeString ("requirePermission", "false");
writer.WriteEndElement ();
}
if (section != null) {
ConfigurationSection parentSection = config.Parent != null ? config.Parent.GetSectionInstance (this, false) : null;
xml = section.SerializeSection (parentSection, Name, mode);
+
+ if (section.SectionInformation.IsProtected) {
+ StringBuilder sb = new StringBuilder ();
+ sb.AppendFormat ("<{0} configProtectionProvider=\"{1}\">\n",
+ Name,
+ section.SectionInformation.ProtectionProvider.Name);
+ sb.Append (config.ConfigHost.EncryptSection (xml,
+ section.SectionInformation.ProtectionProvider,
+ ProtectedConfiguration.Section));
+ sb.AppendFormat ("</{0}>", Name);
+ xml = sb.ToString ();
+ }
}
else {
xml = config.GetSectionXml (this);
tr.Close ();*/
}
}
+
+ internal override void Merge (ConfigInfo data)
+ {}
}
}