ConfigurationPropertyAttribute 클래스

정의

구성 속성을 인스턴스화하도록 .NET에 선언적으로 지시합니다.Declaratively instructs .NET 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
[<System.AttributeUsage(System.AttributeTargets.Property)>]
type ConfigurationPropertyAttribute = class
    inherit Attribute
Public NotInheritable Class ConfigurationPropertyAttribute
Inherits Attribute
상속
ConfigurationPropertyAttribute
특성

예제

다음 예제에서는 특성을 사용 하 여 사용자 지정 개체의 속성을 정의 하는 방법을 보여 줍니다 ConfigurationSection ConfigurationPropertyAttribute .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에서 데코레이팅 매개 변수 값을 사용 하 여 속성을 인스턴스화하고 초기화 하도록 지시할 수 있습니다.You use the ConfigurationPropertyAttribute to decorate a configuration property, which will instruct .NET 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은 리플렉션을 사용 하 여 데코레이팅 매개 변수를 읽고 관련 인스턴스를 만듭니다 ConfigurationProperty .For each property marked with this attribute, .NET 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 구성 시스템은 사용자 지정 구성 요소를 만드는 동안 사용할 수 있는 특성 형식을 제공 합니다.The .NET 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에 지시 하는 형식입니다.The types instructing .NET how to instantiate the custom configuration-element properties. 이러한 형식은 다음과 같습니다.These types include:

  2. .NET에서 사용자 지정 구성 요소 속성의 유효성을 검사 하는 방법을 지정 하는 형식입니다.The types instructing .NET 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()

현재 개체를 나타내는 문자열을 반환합니다.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)

적용 대상

추가 정보