protected internal virtual object GetRuntimeObject ()
{
if (SectionHandler != null) {
ConfigurationSection parentSection = sectionInformation != null ? sectionInformation.GetParentSection () : null;
object parent = parentSection != null ? parentSection.GetRuntimeObject () : null;
if (RawXml == null)
return parent;
try {
// This code requires some re-thinking...
XmlReader reader = new ConfigXmlTextReader (
new StringReader (RawXml),
Configuration.FilePath);
DoDeserializeSection (reader);
if (!String.IsNullOrEmpty (SectionInformation.ConfigSource)) {
string fileDir = SectionInformation.ConfigFilePath;
if (!String.IsNullOrEmpty (fileDir))
fileDir = Path.GetDirectoryName (fileDir);
else
fileDir = String.Empty;
string path = Path.Combine (fileDir, SectionInformation.ConfigSource);
if (File.Exists (path)) {
RawXml = File.ReadAllText (path);
SectionInformation.SetRawXml (RawXml);
}
}
} catch {
// ignore, it can fail - we deserialize only in order to get
// the configSource attribute
}
XmlDocument doc = new XmlDocument ();
doc.LoadXml (RawXml);
return SectionHandler.Create (parent, ConfigContext, doc.DocumentElement);
}
return this;
}