<commit_before>﻿using System;

namespace NFig
{
    [AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
    public abstract class DefaultSettingValueAttribute : Attribute
    {
        public object DefaultValue { get; protected set; }
        public object SubApp { get; protected set; }
        public object Tier { get; protected set; }
        public object DataCenter { get; protected set; }
        public bool AllowOverrides { get; protected set; } = true;
    }
}<commit_msg>Add XML docs for DefaultSettingValueAttribute<commit_after>﻿using System;

namespace NFig
{
    /// <summary>
    /// This is the base class for all NFig attributes which specify default values, except for the <see cref="SettingAttribute"/> itself. This attribute is
    /// abstract because you should provide the attributes which make sense for your individual setup. The subApp/tier/dataCenter parameters in inheriting 
    /// attributes should be strongly typed (rather than using "object"), and match the generic parameters used for the NFigStore and Settings object.
    /// </summary>
    [AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
    public abstract class DefaultSettingValueAttribute : Attribute
    {
        /// <summary>
        /// The value of the default being applied. This must be either a convertable string, or a literal value whose type matches that of the setting. For
        /// encrypted settings, a default value must always be an encrypted string.
        /// </summary>
        public object DefaultValue { get; protected set; }
        /// <summary>
        /// The sub-app which the default is applicable to. If null or the zero-value, it is considered applicable to the "Global" app, as well as any sub-app
        /// which does not have another default applied. If your application only uses the Global app (no sub-apps), then you should not include this parameter
        /// in inheriting attributes.
        /// </summary>
        public object SubApp { get; protected set; }
        /// <summary>
        /// The deployment tier (e.g. local/dev/prod) which the default is applicable to. If null or the zero-value, the default is applicable to any tier.
        /// </summary>
        public object Tier { get; protected set; }
        /// <summary>
        /// The data center which the default is applicable to. If null or the zero-value, the default is applicable to any data center.
        /// </summary>
        public object DataCenter { get; protected set; }
        /// <summary>
        /// Specifies whether NFig should accept runtime overrides for this default. Note that this only applies to environments where this particular default
        /// is the active default. For example, if you set an default for Tier=Prod/DataCenter=Any which DOES NOT allow defaults, and another default for
        /// Tier=Prod/DataCenter=East which DOES allow overrides, then you will be able to set overrides in Prod/East, but you won't be able to set overrides
        /// in any other data center.
        /// </summary>
        public bool AllowOverrides { get; protected set; } = true;
    }
}
{'fraction_non_alphanumeric': 0.07963197969543147, 'fraction_numerical': 0.0, 'mean_word_length': 2.7094117647058824, 'pattern_counts': {'":': 0, '<': 16, '<?xml version=': 0, '>': 16, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4368249', 'n_tokens_mistral': 749, 'n_tokens_neox': 736, 'n_words': 370}