ConfigurationProperty Class
TOC
Collapse the table of content
Expand the table of content

ConfigurationProperty Class

 

This API supports the product infrastructure and is not intended to be used directly from your code.

Represents an attribute or a child of a configuration element. This class cannot be inherited.

Namespace:   System.Configuration
Assembly:  System.Configuration (in System.Configuration.dll)

System.Object
  System.Configuration.ConfigurationProperty

public sealed class ConfigurationProperty

NameDescription
System_CAPS_pubmethodConfigurationProperty(String, Type)

This API supports the product infrastructure and is not intended to be used directly from your code. Initializes a new instance of the ConfigurationProperty class.

System_CAPS_pubmethodConfigurationProperty(String, Type, Object)

This API supports the product infrastructure and is not intended to be used directly from your code. Initializes a new instance of the ConfigurationProperty class.

System_CAPS_pubmethodConfigurationProperty(String, Type, Object, ConfigurationPropertyOptions)

This API supports the product infrastructure and is not intended to be used directly from your code. Initializes a new instance of the ConfigurationProperty class.

System_CAPS_pubmethodConfigurationProperty(String, Type, Object, TypeConverter, ConfigurationValidatorBase, ConfigurationPropertyOptions)

This API supports the product infrastructure and is not intended to be used directly from your code. Initializes a new instance of the ConfigurationProperty class.

System_CAPS_pubmethodConfigurationProperty(String, Type, Object, TypeConverter, ConfigurationValidatorBase, ConfigurationPropertyOptions, String)

This API supports the product infrastructure and is not intended to be used directly from your code. Initializes a new instance of the ConfigurationProperty class.

NameDescription
System_CAPS_pubpropertyConverter

This API supports the product infrastructure and is not intended to be used directly from your code. Gets the TypeConverter used to convert this ConfigurationProperty into an XML representation for writing to the configuration file.

System_CAPS_pubpropertyDefaultValue

This API supports the product infrastructure and is not intended to be used directly from your code. Gets the default value for this ConfigurationProperty property.

System_CAPS_pubpropertyDescription

This API supports the product infrastructure and is not intended to be used directly from your code. Gets the description associated with the ConfigurationProperty.

System_CAPS_pubpropertyIsAssemblyStringTransformationRequired

This API supports the product infrastructure and is not intended to be used directly from your code. Indicates whether the assembly name for the configuration property requires transformation when it is serialized for an earlier version of the .NET Framework.

System_CAPS_pubpropertyIsDefaultCollection

This API supports the product infrastructure and is not intended to be used directly from your code. Gets a value that indicates whether the property is the default collection of an element.

System_CAPS_pubpropertyIsKey

This API supports the product infrastructure and is not intended to be used directly from your code. Gets a value indicating whether this ConfigurationProperty is the key for the containing ConfigurationElement object.

System_CAPS_pubpropertyIsRequired

This API supports the product infrastructure and is not intended to be used directly from your code. Gets a value indicating whether this ConfigurationProperty is required.

System_CAPS_pubpropertyIsTypeStringTransformationRequired

This API supports the product infrastructure and is not intended to be used directly from your code. Indicates whether the type name for the configuration property requires transformation when it is serialized for an earlier version of the .NET Framework.

System_CAPS_pubpropertyIsVersionCheckRequired

This API supports the product infrastructure and is not intended to be used directly from your code. Indicates whether the configuration property's parent configuration section is queried at serialization time to determine whether the configuration property should be serialized into XML.

System_CAPS_pubpropertyName

This API supports the product infrastructure and is not intended to be used directly from your code. Gets the name of this ConfigurationProperty.

System_CAPS_pubpropertyType

This API supports the product infrastructure and is not intended to be used directly from your code. Gets the type of this ConfigurationProperty object.

System_CAPS_pubpropertyValidator

This API supports the product infrastructure and is not intended to be used directly from your code. Gets the ConfigurationValidatorAttribute, which is used to validate this ConfigurationProperty object.

NameDescription
System_CAPS_pubmethodEquals(Object)

Determines whether the specified object is equal to the current object.(Inherited from Object.)

System_CAPS_pubmethodGetHashCode()

Serves as the default hash function. (Inherited from Object.)

System_CAPS_pubmethodGetType()

Gets the Type of the current instance.(Inherited from Object.)

System_CAPS_pubmethodToString()

Returns a string that represents the current object.(Inherited from Object.)

In the case of a simple ConfigurationElement, such as the CustomSection shown in the next example, the ConfigurationProperty objects represent attributes such as fileName.

In the case of more complex configuration elements such as a section containing subsections, for instance authentication, the ConfigurationProperty objects can represent ConfigurationElement objects as well as attributes.

The ConfigurationPropertyCollection class represents the collection of the ConfigurationProperty objects that can be either attributes or ConfigurationElement objects of a configuration element.

The ConfigurationProperty class represents an individual configuration setting. This class allows you to get or set the name, type, and default value for a particular configuration entity (attribute or element) and specify whether the attribute is required, is an element key, or represents a default element collection.

Notes to Implementers:

Every ConfigurationElement object creates an internal ConfigurationPropertyCollection collection of ConfigurationProperty objects that represents either the element attributes or a collection of child elements.

Non-customizable information and functionality is contained by an ElementInformation object provided by the ElementInformation property.

You can use a programmatic or a declarative (attributed) coding model to create a custom configuration element.

  • Programmatic Model. This model requires that you create a property for each element attribute to get and/or set its value and add it to the internal property bag of the underlying ConfigurationElement base class.

  • Declarative Model. This simpler model, also called attributed model, allows you to define an element attribute by using a property and decorate it with attributes. These attributes instruct the ASP.NET configuration system about the property types and their default values. With this information, obtained through reflection, the ASP.NET configuration system creates the element property objects for you and performs the required initialization.

  1. The following code example shows how to use the ConfigurationProperty when you create a custom section.

using System;
using System.Configuration;
using System.Collections;
using System.ComponentModel;

namespace ConfigurationPropertyExample
{
    // Define a custom section.
    // Shows how to use the ConfigurationProperty
    // class when defining a custom section.
    public sealed class CustomSection : ConfigurationSection
    {
        // The collection (property bag) that contains 
        // the section properties.
        private static ConfigurationPropertyCollection _Properties;

        // The FileName property.
        private static ConfigurationProperty _FileName;

        // The Alias property.
        private static ConfigurationProperty _Alias;

        // The MaxUsers property.
        private static ConfigurationProperty _MaxUsers;

        // The MaxIdleTime property.
        private static ConfigurationProperty _MaxIdleTime;

        // CustomSection constructor.
        static CustomSection()
        {
            // Initialize the _FileName property
            _FileName =
                new ConfigurationProperty("fileName",
                typeof(string), "default.txt");

            // Initialize the _MaxUsers property
            _MaxUsers =
                new ConfigurationProperty("maxUsers",
                typeof(long), (long)1000,
                ConfigurationPropertyOptions.None);

            // Initialize the _MaxIdleTime property
            TimeSpan minTime = TimeSpan.FromSeconds(30);
            TimeSpan maxTime = TimeSpan.FromMinutes(5);

            ConfigurationValidatorBase _TimeSpanValidator =
                new TimeSpanValidator(minTime, maxTime, false);

            _MaxIdleTime =
                new ConfigurationProperty("maxIdleTime",
                typeof(TimeSpan), TimeSpan.FromMinutes(5),
                TypeDescriptor.GetConverter(typeof(TimeSpan)),
                _TimeSpanValidator,
                ConfigurationPropertyOptions.IsRequired,
                "[Description:This is the max idle time.]");

            // Initialize the _Alias property
            _Alias =
                new ConfigurationProperty("alias",
                typeof(string), "alias.txt");

            // Initialize the Property collection.
            _Properties = new ConfigurationPropertyCollection();
            _Properties.Add(_FileName);
            _Properties.Add(_Alias);
            _Properties.Add(_MaxUsers);
            _Properties.Add(_MaxIdleTime);
        }

        // Return the initialized property bag
        // for the configuration element.
        protected override ConfigurationPropertyCollection Properties
        {
            get
            {
                return _Properties;
            }
        }

        // Clear the property.
        public void ClearCollection()
        {
            Properties.Clear();
        }

        // Remove an element from the property collection.
        public void RemoveCollectionElement(string elName)
        {
            Properties.Remove(elName);
        }

        // Get the property collection enumerator.
        public IEnumerator GetCollectionEnumerator()
        {
            return (Properties.GetEnumerator());
        }

        [StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'\"|\\",
            MinLength = 1, MaxLength = 60)]
        public string FileName
        {
            get
            {
                return (string)this["fileName"];
            }
            set
            {
                this["fileName"] = value;
            }
        }

        [StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'\"|\\",
            MinLength = 1, MaxLength = 60)]
        public string Alias
        {
            get
            {
                return (string)this["alias"];
            }
            set
            {
                this["alias"] = value;
            }
        }

        [LongValidator(MinValue = 1, MaxValue = 1000000,
            ExcludeRange = false)]
        public long MaxUsers
        {
            get
            {
                return (long)this["maxUsers"];
            }
            set
            {
                this["maxUsers"] = value;
            }
        }

        public TimeSpan MaxIdleTime
        {
            get
            {
                return (TimeSpan)this["maxIdleTime"];
            }
            set
            {
                this["maxIdleTime"] = value;
            }
        }
    }
}

The following is an excerpt of the configuration file used by the code in the previous example.

The following example shows how to create the previous section in code.

// Define a custom section programmatically.
static void CreateSection()
{
    try
    {
        CustomSection customSection;

        // Get the current configuration file.
        System.Configuration.Configuration config =
                ConfigurationManager.OpenExeConfiguration(
                ConfigurationUserLevel.None);

        // Create the section entry  
        // in the <configSections> and the 
        // related target section in <configuration>.
        // Call it "CustomSection2" since the file in this 
        // example already has "CustomSection".
        if (config.Sections["CustomSection"] == null)
        {
            customSection = new CustomSection();
            config.Sections.Add("CustomSection2", customSection);
            customSection.SectionInformation.ForceSave = true;
            config.Save(ConfigurationSaveMode.Full);
        }
    }
    catch (ConfigurationErrorsException err)
    {
        Console.WriteLine(err.ToString());
    }
}

.NET Framework
Available since 2.0

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top
Show:
© 2016 Microsoft