ConfigurationPropertyAttribute 클래스

정의

구성 속성을 인스턴스화하도록 .NET Framework에 선언적으로 지시합니다.Declaratively instructs the .NET Framework to instantiate a configuration property. 이 클래스는 상속될 수 없습니다.This class cannot be inherited.

public ref class ConfigurationPropertyAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Property)]
public sealed class ConfigurationPropertyAttribute : Attribute
type ConfigurationPropertyAttribute = class
    inherit Attribute
Public NotInheritable Class ConfigurationPropertyAttribute
Inherits Attribute
상속
ConfigurationPropertyAttribute
특성

예제

다음 예제에서는 ConfigurationPropertyAttribute 특성을 사용 하 여 사용자 지정 ConfigurationSection 개체의 속성을 정의 하는 방법을 보여 줍니다.The following example shows how to define the properties of a custom ConfigurationSection object using the ConfigurationPropertyAttribute attribute.

이 예제에서는 두 개의 클래스가 포함 되어 있습니다.The example contains two classes. UrlsSection 사용자 지정 클래스는 ConfigurationPropertyAttribute를 사용 하 여 자체 속성을 정의 합니다.The UrlsSection custom class uses the ConfigurationPropertyAttribute to define its own properties. 합니다 UsingConfigurationPropertyAttribute 클래스가 사용 하는 UrlsSection 읽고 애플리케이션 구성 파일에서 사용자 지정 섹션을 작성 합니다.The UsingConfigurationPropertyAttribute class uses the UrlsSection to read and write the custom section in the application configuration file.

using System;
using System.Configuration;

// Define a custom section.
// This class shows how to use the ConfigurationPropertyAttribute.
public class UrlsSection : ConfigurationSection
{
    [ConfigurationProperty("name", DefaultValue = "Contoso",
        IsRequired = true, IsKey = true)]
    public string Name
    {
        get
        {
            return (string)this["name"];
        }
        set
        {
            this["name"] = value;
        }
    }

    [ConfigurationProperty("url", DefaultValue = "http://www.contoso.com",
        IsRequired = true)]
    [RegexStringValidator(@"\w+:\/\/[\w.]+\S*")]
    public string Url
    {
        get
        {
            return (string)this["url"];
        }
        set
        {
            this["url"] = value;
        }
    }

    [ConfigurationProperty("port", DefaultValue = (int)0, IsRequired = false)]
    [IntegerValidator(MinValue = 0, MaxValue = 8080, ExcludeRange = false)]
    public int Port
    {
        get
        {
            return (int)this["port"];
        }
        set
        {
            this["port"] = value;
        }
    }
}
Imports System.Configuration


' Define a custom section.
' This class shows how to use the ConfigurationPropertyAttribute.
Public Class UrlsSection
    Inherits ConfigurationSection
    <ConfigurationProperty("name", DefaultValue:="Contoso", IsRequired:=True, IsKey:=True)>
    Public Property Name() As String
        Get
            Return CStr(Me("name"))
        End Get
        Set(ByVal value As String)
            Me("name") = value
        End Set
    End Property

    <ConfigurationProperty("url", DefaultValue:="http://www.contoso.com", IsRequired:=True), RegexStringValidator("\w+:\/\/[\w.]+\S*")>
    Public Property Url() As String
        Get
            Return CStr(Me("url"))
        End Get
        Set(ByVal value As String)
            Me("url") = value
        End Set
    End Property

    <ConfigurationProperty("port", DefaultValue:=0, IsRequired:=False), IntegerValidator(MinValue:=0, MaxValue:=8080, ExcludeRange:=False)>
    Public Property Port() As Integer
        Get
            Return CInt(Fix(Me("port")))
        End Get
        Set(ByVal value As Integer)
            Me("port") = value
        End Set
    End Property
End Class
using System;
using System.Configuration;

public class UsingConfigurationPropertyAttribute
{

    // Create a custom section and save it in the 
    // application configuration file.
    static void CreateCustomSection()
    {
        try
        {

            // Create a custom configuration section.
            UrlsSection customSection = new UrlsSection();

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

            // Add the custom section to the application
            // configuration file.
            if (config.Sections["CustomSection"] == null)
            {
                config.Sections.Add("CustomSection", customSection);
            }

            // Save the application configuration file.
            customSection.SectionInformation.ForceSave = true;
            config.Save(ConfigurationSaveMode.Modified);

            Console.WriteLine("Created custom section in the application configuration file: {0}",
                config.FilePath);
            Console.WriteLine();
        }
        catch (ConfigurationErrorsException err)
        {
            Console.WriteLine("CreateCustomSection: {0}", err.ToString());
        }
    }

    static void ReadCustomSection()
    {
        try
        {
            // Get the application configuration file.
            System.Configuration.Configuration config =
                    ConfigurationManager.OpenExeConfiguration(
                    ConfigurationUserLevel.None) as Configuration;

            // Read and display the custom section.
            UrlsSection customSection =
                config.GetSection("CustomSection") as UrlsSection;
            Console.WriteLine("Reading custom section from the configuration file.");
            Console.WriteLine("Section name: {0}", customSection.Name);
            Console.WriteLine("Url: {0}", customSection.Url);
            Console.WriteLine("Port: {0}", customSection.Port);
            Console.WriteLine();
        }
        catch (ConfigurationErrorsException err)
        {
            Console.WriteLine("ReadCustomSection(string): {0}", err.ToString());
        }
    }
    
    static void Main(string[] args)
    {
       
        // Get the name of the application.
        string appName =
            Environment.GetCommandLineArgs()[0];

        // Create a custom section and save it in the 
        // application configuration file.
        CreateCustomSection();

        // Read the custom section saved in the
        // application configuration file.
        ReadCustomSection();

        Console.WriteLine("Press enter to exit.");

        Console.ReadLine();
    }
}
Imports System.Configuration

Public Class UsingConfigurationPropertyAttribute

    ' Create a custom section and save it in the 
    ' application configuration file.
    Private Shared Sub CreateCustomSection()
        Try

            ' Create a custom configuration section.
            Dim customSection As New UrlsSection()

            ' Get the current configuration file.
            Dim config As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)

            ' Add the custom section to the application
            ' configuration file.
            If config.Sections("CustomSection") Is Nothing Then
                config.Sections.Add("CustomSection", customSection)
            End If


            ' Save the application configuration file.
            customSection.SectionInformation.ForceSave = True
            config.Save(ConfigurationSaveMode.Modified)

            Console.WriteLine("Created custom section in the application configuration file: {0}", config.FilePath)
            Console.WriteLine()

        Catch err As ConfigurationErrorsException
            Console.WriteLine("CreateCustomSection: {0}", err.ToString())
        End Try

    End Sub

    Private Shared Sub ReadCustomSection()
        Try
            ' Get the application configuration file.
            Dim config As System.Configuration.Configuration = TryCast(ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None), Configuration)

            ' Read and display the custom section.
            Dim customSection As UrlsSection = TryCast(config.GetSection("CustomSection"), UrlsSection)
            Console.WriteLine("Reading custom section from the configuration file.")
            Console.WriteLine("Section name: {0}", customSection.Name)
            Console.WriteLine("Url: {0}", customSection.Url)
            Console.WriteLine("Port: {0}", customSection.Port)
            Console.WriteLine()
        Catch err As ConfigurationErrorsException
            Console.WriteLine("ReadCustomSection(string): {0}", err.ToString())
        End Try

    End Sub

    Shared Sub Main(ByVal args() As String)

        ' Get the name of the application.
        Dim appName As String = Environment.GetCommandLineArgs()(0)

        ' Create a custom section and save it in the 
        ' application configuration file.
        CreateCustomSection()

        ' Read the custom section saved in the
        ' application configuration file.
        ReadCustomSection()

        Console.WriteLine("Press enter to exit.")

        Console.ReadLine()
    End Sub
End Class

다음은 앞의 예제에 정의 된 대로 사용자 지정 섹션을 포함 하는 구성 파일의 일부입니다.The following is an excerpt of the configuration file containing the custom section as defined in the previous sample.

<?xml version="1.0" encoding="utf-8"?>  
<configuration>  
    <configSections>  
        <section name="CustomSection" type="UrlsSection, UsingConfigurationPropertyAttribute, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />  
    </configSections>  
    <CustomSection name="Contoso" url="http://www.contoso.com" />  
</configuration>  

설명

ConfigurationPropertyAttribute를 사용 하 여 구성 속성을 데코레이팅하 며,이 속성은 데코레이팅 매개 변수 값을 사용 하 여 속성을 인스턴스화하고 초기화 하도록 .NET Framework에 지시 합니다.You use the ConfigurationPropertyAttribute to decorate a configuration property, which will instruct the .NET Framework to instantiate and to initialize the property using the value of the decorating parameter.

참고

사용자 지정 구성 요소를 만드는 가장 간단한 방법은 특성 사용된 (선언적) 모델을 사용 하는 것입니다.The simplest way to create a custom configuration element is to use the attributed (declarative) model. 사용자 지정 공용 속성을 선언 하 고 ConfigurationPropertyAttribute 특성을 사용 하 여 데코 레이트 합니다.You declare the custom public properties and decorate them with the ConfigurationPropertyAttribute attribute. 이 특성으로 표시 된 각 속성에 대해 .NET Framework 리플렉션을 사용 하 여 장식 매개 변수를 읽고 관련 ConfigurationProperty 인스턴스를 만듭니다.For each property marked with this attribute, the .NET Framework uses reflection to read the decorating parameters and create a related ConfigurationProperty instance. 프로그래밍 방식으로 모델을 사용할 수도 있습니다 이며이 경우 사용자 지정 공용 속성을 선언 하 고 해당 컬렉션을 반환 해야 합니다.You can also use the programmatic model, in which case it is your responsibility to declare the custom public properties and return their collection.

.NET Framework 구성 시스템에는 사용자 지정 구성 요소를 만드는 동안 사용할 수 있는 특성 형식을 제공 합니다.The .NET Framework configuration system provides attribute types that you can use during the creation of custom configuration elements. 두 가지 종류의 특성 유형:There are two kinds of attribute types:

  1. .NET Framework 사용자 지정 구성 요소 속성을 인스턴스화하는 방법을 지시 하는 형식입니다.The types instructing the .NET Framework how to instantiate the custom configuration-element properties. 이러한 유형은 다음과 같습니다.These types include:

  2. .NET Framework 사용자 지정 구성 요소 속성의 유효성을 검사 하는 방법을 지시 하는 형식입니다.The types instructing the .NET Framework how to validate the custom configuration-element properties. 이러한 유형은 다음과 같습니다.These types include:

생성자

ConfigurationPropertyAttribute(String)

ConfigurationPropertyAttribute 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of ConfigurationPropertyAttribute class.

속성

DefaultValue

데코레이팅된 속성의 기본값을 가져오거나 설정합니다.Gets or sets the default value for the decorated property.

IsDefaultCollection

속성이 데코레이팅된 구성 속성의 기본 속성 컬렉션인지 여부를 나타내는 값을 가져오거나 설정합니다.Gets or sets a value indicating whether this is the default property collection for the decorated configuration property.

IsKey

속성이 데코레이팅된 요소 속성의 키 속성인지 여부를 나타내는 값을 가져오거나 설정합니다.Gets or sets a value indicating whether this is a key property for the decorated element property.

IsRequired

데코레이팅된 요소 속성이 필요한지 여부를 나타내는 값을 가져오거나 설정합니다.Gets or sets a value indicating whether the decorated element property is required.

Name

데코레이팅된 구성 요소 속성의 이름을 가져옵니다.Gets the name of the decorated configuration-element property.

Options

데코레이팅된 구성 요소 속성의 ConfigurationPropertyOptions를 가져오거나 설정합니다.Gets or sets the ConfigurationPropertyOptions for the decorated configuration-element property.

TypeId

파생 클래스에서 구현될 때 이 Attribute의 고유 식별자를 가져옵니다.When implemented in a derived class, gets a unique identifier for this Attribute.

(다음에서 상속됨 Attribute)

메서드

Equals(Object)

이 인스턴스가 지정된 개체와 같은지를 나타내는 값을 반환합니다.Returns a value that indicates whether this instance is equal to a specified object.

(다음에서 상속됨 Attribute)
GetHashCode()

이 인스턴스의 해시 코드를 반환합니다.Returns the hash code for this instance.

(다음에서 상속됨 Attribute)
GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
IsDefaultAttribute()

파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(다음에서 상속됨 Attribute)
Match(Object)

파생된 클래스에서 재정의할 경우,이 인스턴스가 지정된 된 개체와 같은지 여부를 나타내는 값을 반환 합니다.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(다음에서 상속됨 Attribute)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 string을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다.Maps a set of names to a corresponding set of dispatch identifiers.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다.Retrieves the type information for an object, which can be used to get the type information for an interface.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(다음에서 상속됨 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다.Provides access to properties and methods exposed by an object.

(다음에서 상속됨 Attribute)

적용 대상

추가 정보