File: sys\system\configuration\SettingsAttributes.cs
Project: ndp\fx\src\System.csproj (System)
//------------------------------------------------------------------------------
// <copyright file="SettingsAttributes.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>                                                                
//------------------------------------------------------------------------------
 
namespace System.Configuration
{
    using System;
 
    /// <devdoc>
    ///     Indicates that a setting is to be stored on a per-application basis.
    /// </devdoc>
    [AttributeUsage(AttributeTargets.Property)]
    public sealed class ApplicationScopedSettingAttribute : SettingAttribute {
    }
 
    /// <devdoc>
    ///     Indicates to the provider what default value to use for this setting when no stored value
    ///     is found. The value should be encoded into a string and is interpreted based on the SerializeAs
    ///     value for this setting. For example, if SerializeAs is Xml, the default value will be
    ///     "stringified" Xml.
    /// </devdoc>
    [AttributeUsage(AttributeTargets.Property)]
    public sealed class DefaultSettingValueAttribute : Attribute {
        private readonly string _value;
 
        /// <devdoc>
        ///     Constructor takes the default value as string.
        /// </devdoc>
        public DefaultSettingValueAttribute(string value) {
            _value = value;
        }
 
        /// <devdoc>
        ///     Default value.
        /// </devdoc>
        public string Value {
            get {
                return _value;
            }
        }
    }
 
    /// <devdoc>
    ///     Indicates that the provider should disable any logic that gets invoked when an application
    ///     upgrade is detected.
    /// </devdoc>
    [AttributeUsage(AttributeTargets.Property)]
    public sealed class NoSettingsVersionUpgradeAttribute : Attribute {
    }
 
    /// <devdoc>
    ///     Use this attribute to mark properties on a settings class that are to be treated
    ///     as settings. ApplicationSettingsBase will ignore all properties not marked with
    ///     this or a derived attribute.
    /// </devdoc>
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")]
    [AttributeUsage(AttributeTargets.Property)]
    public class SettingAttribute : Attribute {
    }
 
    /// <devdoc>
    ///     Description for a particular setting.
    /// </devdoc>
    [AttributeUsage(AttributeTargets.Property)]
    public sealed class SettingsDescriptionAttribute : Attribute {
        private readonly string _desc;
 
        /// <devdoc>
        ///     Constructor takes the description string.
        /// </devdoc>
        public SettingsDescriptionAttribute(string description) {
            _desc = description;
        }
    
        /// <devdoc>
        ///     Description string.
        /// </devdoc>
        public string Description {
            get {
                return _desc;
            }
        }
    }
 
    /// <devdoc>
    ///     Description for a particular settings group.
    /// </devdoc>
    [AttributeUsage(AttributeTargets.Class)]
    public sealed class SettingsGroupDescriptionAttribute : Attribute {
        private readonly string _desc;
 
        /// <devdoc>
        ///     Constructor takes the description string.
        /// </devdoc>
        public SettingsGroupDescriptionAttribute(string description) {
            _desc = description;
        }
    
        /// <devdoc>
        ///     Description string.
        /// </devdoc>
        public string Description {
            get {
                return _desc;
            }
        }
    }
 
    /// <devdoc>
    ///     Name of a particular settings group.
    /// </devdoc>
    [AttributeUsage(AttributeTargets.Class)]
    public sealed class SettingsGroupNameAttribute : Attribute {
        private readonly string _groupName;
 
        /// <devdoc>
        ///     Constructor takes the group name.
        /// </devdoc>
        public SettingsGroupNameAttribute(string groupName) {
            _groupName = groupName;
        }
    
        /// <devdoc>
        ///     Name of the settings group.
        /// </devdoc>
        public string GroupName {
            get {
                return _groupName;
            }
        }
    }
 
    /// <devdoc>
    ///     Indicates the SettingsManageability for a group of/individual setting.
    /// </devdoc>
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property)]
    public sealed class SettingsManageabilityAttribute : Attribute {
        private readonly SettingsManageability _manageability;
 
        /// <devdoc>
        ///     Constructor takes a SettingsManageability enum value.
        /// </devdoc>
        public SettingsManageabilityAttribute(SettingsManageability manageability) {
            _manageability = manageability;
        }
    
        /// <devdoc>
        ///     SettingsManageability value to use
        /// </devdoc>
        public SettingsManageability Manageability {
            get {
                return _manageability;
            }
        }
    }
 
    /// <devdoc>
    ///     Indicates the provider associated with a group of/individual setting.
    /// </devdoc>
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property)]
    public sealed class SettingsProviderAttribute : Attribute {
        private readonly string _providerTypeName;
 
        /// <devdoc>
        ///     Constructor takes the provider's assembly qualified type name.
        /// </devdoc>
        public SettingsProviderAttribute(string providerTypeName) {
            _providerTypeName = providerTypeName;
        }
 
        /// <devdoc>
        ///     Constructor takes the provider's type.
        /// </devdoc>
        public SettingsProviderAttribute(Type providerType) {
            if (providerType != null) {
                _providerTypeName = providerType.AssemblyQualifiedName;
            }
        }
    
        /// <devdoc>
        ///     Type name of the provider
        /// </devdoc>
        public string ProviderTypeName {
            get {
                return _providerTypeName;
            }
        }
    }
 
    /// <devdoc>
    ///     Indicates the SettingsSerializeAs for a group of/individual setting.
    /// </devdoc>
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property)]
    public sealed class SettingsSerializeAsAttribute : Attribute {
        private readonly SettingsSerializeAs _serializeAs;
 
        /// <devdoc>
        ///     Constructor takes a SettingsSerializeAs enum value.
        /// </devdoc>
        public SettingsSerializeAsAttribute(SettingsSerializeAs serializeAs) {
            _serializeAs = serializeAs;
        }
    
        /// <devdoc>
        ///     SettingsSerializeAs value to use
        /// </devdoc>
        public SettingsSerializeAs SerializeAs {
            get {
                return _serializeAs;
            }
        }
    }
 
    /// <devdoc>
    ///     Indicates the SpecialSetting for a group of/individual setting.
    /// </devdoc>
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property)]
    public sealed class SpecialSettingAttribute : Attribute {
        private readonly SpecialSetting _specialSetting;
 
        /// <devdoc>
        ///     Constructor takes a SpecialSetting enum value.
        /// </devdoc>
        public SpecialSettingAttribute(SpecialSetting specialSetting) {
            _specialSetting = specialSetting;
        }
    
        /// <devdoc>
        ///     SpecialSetting value to use
        /// </devdoc>
        public SpecialSetting SpecialSetting {
            get {
                return _specialSetting;
            }
        }
    }
 
    /// <devdoc>
    ///     Indicates that a setting is to be stored on a per-user basis.
    /// </devdoc>
    [AttributeUsage(AttributeTargets.Property)]
    public sealed class UserScopedSettingAttribute : SettingAttribute {
    }
 
    public enum  SettingsManageability {
       Roaming = 0
    }
 
    /// <devdoc>
    ///     Indicates settings that are to be treated "specially".
    /// </devdoc>
    public enum  SpecialSetting {
       ConnectionString = 0,
       WebServiceUrl = 1
    }
}