<PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0-preview.7.23375.6" />

OverrideModeSetting

using System.Globalization; namespace System.Configuration { internal struct OverrideModeSetting { private const byte ApiDefinedLegacy = 16; private const byte ApiDefinedNewMode = 32; private const byte ApiDefinedAny = 48; private const byte XmlDefinedLegacy = 64; private const byte XmlDefinedNewMode = 128; private const byte XmlDefinedAny = 192; private const byte ModeMask = 15; private byte _mode; internal static readonly OverrideModeSetting s_sectionDefault; internal static readonly OverrideModeSetting s_locationDefault; internal bool IsDefaultForSection { get { OverrideMode overrideMode = OverrideMode; if (overrideMode != OverrideMode.Allow) return overrideMode == OverrideMode.Inherit; return true; } } internal bool IsDefaultForLocationTag { get { if (s_locationDefault.OverrideMode == OverrideMode && (_mode & 48) == 0) return (_mode & 192) == 0; return false; } } internal bool IsLocked => OverrideMode == OverrideMode.Deny; internal string LocationTagXmlString { get { string result = string.Empty; bool flag = false; bool flag2 = false; if ((_mode & 48) != 0) { flag2 = ((_mode & 16) != 0); flag = true; } else if ((_mode & 192) != 0) { flag2 = ((_mode & 64) != 0); flag = true; } if (flag) { string arg; string arg2; if (flag2) { arg = "allowOverride"; arg2 = (AllowOverride ? "true" : "false"); } else { arg = "overrideMode"; arg2 = OverrideModeXmlValue; } result = string.Format(CultureInfo.InvariantCulture, "{0}=\"{1}\"", arg, arg2); } return result; } } internal string OverrideModeXmlValue { get { switch (OverrideMode) { case OverrideMode.Inherit: return "Inherit"; case OverrideMode.Allow: return "Allow"; case OverrideMode.Deny: return "Deny"; default: return null; } } } internal OverrideMode OverrideMode { get { return (OverrideMode)(_mode & 15); } set { VerifyConsistentChangeModel(32); SetMode(value); _mode |= 32; } } internal bool AllowOverride { get { bool result = true; switch (OverrideMode) { case OverrideMode.Deny: result = false; break; } return result; } set { VerifyConsistentChangeModel(16); SetMode((!value) ? OverrideMode.Deny : OverrideMode.Inherit); _mode |= 16; } } internal static OverrideModeSetting CreateFromXmlReadValue(bool allowOverride) { OverrideModeSetting result = default(OverrideModeSetting); result.SetMode((!allowOverride) ? OverrideMode.Deny : OverrideMode.Inherit); result._mode |= 64; return result; } internal static OverrideModeSetting CreateFromXmlReadValue(OverrideMode mode) { OverrideModeSetting result = default(OverrideModeSetting); result.SetMode(mode); result._mode |= 128; return result; } internal static OverrideMode ParseOverrideModeXmlValue(string value, XmlUtil xmlUtil) { if (value == "Inherit") return OverrideMode.Inherit; if (value == "Allow") return OverrideMode.Allow; if (!(value == "Deny")) throw new ConfigurationErrorsException(System.SR.Config_section_override_mode_attribute_invalid, xmlUtil); return OverrideMode.Deny; } internal static bool CanUseSameLocationTag(OverrideModeSetting x, OverrideModeSetting y) { bool flag = x.OverrideMode == y.OverrideMode; if (!flag) return false; if ((x._mode & 48) != 0) flag = IsMatchingApiChangedLocationTag(x, y); else if ((y._mode & 48) != 0) { flag = IsMatchingApiChangedLocationTag(y, x); } else if ((x._mode & 192) != 0 || (y._mode & 192) != 0) { flag = ((x._mode & 192) == (y._mode & 192)); } return flag; } private static bool IsMatchingApiChangedLocationTag(OverrideModeSetting x, OverrideModeSetting y) { bool result = false; if ((y._mode & 48) != 0) result = ((x._mode & 48) == (y._mode & 48)); else if ((y._mode & 192) != 0) { result = (((x._mode & 16) != 0 && (y._mode & 64) != 0) || ((x._mode & 32) != 0 && (y._mode & 128) != 0)); } return result; } internal void ChangeModeInternal(OverrideMode mode) { SetMode(mode); } private void SetMode(OverrideMode mode) { _mode = (byte)mode; } private void VerifyConsistentChangeModel(byte required) { byte b = (byte)(_mode & 48); if (b != 0 && b != required) throw new ConfigurationErrorsException(System.SR.Cannot_change_both_AllowOverride_and_OverrideMode); } static OverrideModeSetting() { OverrideModeSetting overrideModeSetting = new OverrideModeSetting { _mode = 1 }; s_sectionDefault = overrideModeSetting; overrideModeSetting = new OverrideModeSetting { _mode = 0 }; s_locationDefault = overrideModeSetting; } } }