internal void hlClearResultRecursive(string configKey, bool forceEvaluatation) {
SectionRecord sectionRecord;
// Refresh it's factory Record
RefreshFactoryRecord(configKey);
// Clear any stored result in the section
sectionRecord = GetSectionRecord(configKey, false);
if (sectionRecord != null) {
sectionRecord.ClearResult();
sectionRecord.ClearRawXml();
}
//
// If we need to reevaluate, add a dummy file input so
// that we open the file on the next evaluation
//
if (forceEvaluatation && !IsInitDelayed && !String.IsNullOrEmpty(ConfigStreamInfo.StreamName)) {
if (_flags[SupportsPath]) {
throw ExceptionUtil.UnexpectedError("BaseConfigurationRecord::hlClearResultRecursive");
}
FactoryRecord factoryRecord = FindFactoryRecord(configKey, false);
if (factoryRecord != null && !factoryRecord.IsGroup) {
configKey = factoryRecord.ConfigKey;
sectionRecord = EnsureSectionRecord(configKey, false);
if (!sectionRecord.HasFileInput) {
SectionXmlInfo sectionXmlInfo = new SectionXmlInfo(
configKey, _configPath, _configPath, null,
ConfigStreamInfo.StreamName, 0, null, null,
null, null, null,
null, false, false);
SectionInput fileInput = new SectionInput(sectionXmlInfo, null);
sectionRecord.AddFileInput(fileInput);
}
}
}
// Recurse
if (_children != null) {
IEnumerable children = _children.Values;
foreach (BaseConfigurationRecord child in children) {
child.hlClearResultRecursive(configKey, forceEvaluatation);
}
}
}