e46a49ecf1
Former-commit-id: d0813289fa2d35e1f8ed77530acb4fb1df441bc0
130 lines
4.2 KiB
C#
130 lines
4.2 KiB
C#
//------------------------------------------------------------------------------
|
|
// <copyright file="SectionInput.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//------------------------------------------------------------------------------
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace System.Configuration {
|
|
|
|
[System.Diagnostics.DebuggerDisplay("SectionInput {_sectionXmlInfo.ConfigKey}")]
|
|
internal class SectionInput {
|
|
// result can be null, so we use this object to indicate whether it has been evaluated
|
|
private static object s_unevaluated = new object();
|
|
|
|
// input from the XML file
|
|
private SectionXmlInfo _sectionXmlInfo;
|
|
|
|
// Provider to enhance config sources
|
|
private ConfigurationBuilder _configBuilder;
|
|
|
|
// Has the config provider been determined for this input?
|
|
private bool _isConfigBuilderDetermined;
|
|
|
|
// Provider to use for encryption
|
|
private ProtectedConfigurationProvider _protectionProvider;
|
|
|
|
// Has the protection provider been determined for this input?
|
|
private bool _isProtectionProviderDetermined;
|
|
|
|
// the result of evaluating this section
|
|
private object _result;
|
|
|
|
// the result of evaluating this section after GetRuntimeObject is called
|
|
private object _resultRuntimeObject;
|
|
|
|
// accummulated errors related to this input
|
|
private List<ConfigurationException> _errors;
|
|
|
|
internal SectionInput(SectionXmlInfo sectionXmlInfo, List<ConfigurationException> errors) {
|
|
_sectionXmlInfo = sectionXmlInfo;
|
|
_errors = errors;
|
|
|
|
_result = s_unevaluated;
|
|
_resultRuntimeObject = s_unevaluated;
|
|
}
|
|
|
|
internal SectionXmlInfo SectionXmlInfo {
|
|
get {return _sectionXmlInfo;}
|
|
}
|
|
|
|
internal bool HasResult {
|
|
get {return _result != s_unevaluated;}
|
|
}
|
|
|
|
internal bool HasResultRuntimeObject {
|
|
get {return _resultRuntimeObject != s_unevaluated;}
|
|
}
|
|
|
|
internal object Result {
|
|
get {
|
|
// Useful assert, but it fires in the debugger when using automatic property evaluation
|
|
// Debug.Assert(_result != s_unevaluated, "_result != s_unevaluated");
|
|
|
|
return _result;
|
|
}
|
|
|
|
set {_result = value;}
|
|
}
|
|
|
|
internal object ResultRuntimeObject {
|
|
get {
|
|
// Useful assert, but it fires in the debugger when using automatic property evaluation
|
|
// Debug.Assert(_resultRuntimeObject != s_unevaluated, "_resultRuntimeObject != s_unevaluated");
|
|
|
|
return _resultRuntimeObject;
|
|
}
|
|
|
|
set {_resultRuntimeObject = value;}
|
|
}
|
|
|
|
internal void ClearResult() {
|
|
_result = s_unevaluated;
|
|
_resultRuntimeObject = s_unevaluated;
|
|
}
|
|
|
|
internal bool IsConfigBuilderDetermined {
|
|
get { return _isConfigBuilderDetermined; }
|
|
}
|
|
|
|
internal ConfigurationBuilder ConfigBuilder {
|
|
get { return _configBuilder; }
|
|
set {
|
|
_configBuilder = value;
|
|
_isConfigBuilderDetermined = true;
|
|
}
|
|
}
|
|
|
|
internal bool IsProtectionProviderDetermined {
|
|
get {return _isProtectionProviderDetermined;}
|
|
}
|
|
|
|
internal ProtectedConfigurationProvider ProtectionProvider {
|
|
get {return _protectionProvider;}
|
|
set {
|
|
_protectionProvider = value;
|
|
_isProtectionProviderDetermined = true;
|
|
}
|
|
}
|
|
|
|
// Errors associated with a section input.
|
|
internal ICollection<ConfigurationException> Errors {
|
|
get {
|
|
return _errors;
|
|
}
|
|
}
|
|
|
|
internal bool HasErrors {
|
|
get {
|
|
return ErrorsHelper.GetHasErrors(_errors);
|
|
}
|
|
}
|
|
|
|
internal void ThrowOnErrors() {
|
|
ErrorsHelper.ThrowOnErrors(_errors);
|
|
}
|
|
}
|
|
}
|