다음을 통해 공유


ConfigurationValidatorAttribute 클래스

정의

System.Configuration 유효성 검사기 특성 형식의 기본 클래스 역할을 합니다.

public ref class ConfigurationValidatorAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Property)]
public class ConfigurationValidatorAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Property)>]
type ConfigurationValidatorAttribute = class
    inherit Attribute
Public Class ConfigurationValidatorAttribute
Inherits Attribute
상속
ConfigurationValidatorAttribute
파생
특성

예제

다음 코드 예제에서는 형식을 사용하여 ConfigurationValidatorAttribute 두 개의 사용자 지정 유효성 검사기를 만드는 방법을 보여 줍니다. 첫 번째 예제에서는 하드 코딩된 매개 변수를 사용하여 유효성 검사를 수행합니다. 두 번째 예제에서는 관련 섹션 속성에 적용할 때 할당된 매개 변수를 사용하여 유효성 검사를 수행합니다. 이 코드 예제에는 3개의 지원 파일도 포함되어 있습니다. 위에서 설명한 유효성 검사기를 사용 하는 사용자 지정 섹션을 포함 하는 첫 번째 파일, 두 번째 파일에는 사용자 지정 변환기 형식인 및 세 번째 파일을 만들고 사용자 지정 유효성 검사기 및 포함 된 섹션을 사용 하는 콘솔 애플리케이션을 포함 합니다.

다음 코드 예제에서는 하드 코딩된 매개 변수를 사용하여 고정 유효성 검사기를 만드는 방법을 보여줍니다.

using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using System.Configuration;

namespace Samples.AspNet
{
    // Show how to create a custom fixed 
    // validator. That is a validator whose
    // validation parameters are hard code in this
    // type.
    public class FixedValidator :
            ConfigurationValidatorBase
    {
       
        public override bool CanValidate(Type type)
        {
            return type == typeof(Automobile);
        }

        public override void Validate(object value)
        {

            ArrayList make = new ArrayList();

            make.Add("Ferrari");
            make.Add("Porsche");
            make.Add("Lamborghini");

            int minYear = 2004;
            long maxMiles = 100;
            string color = "red";
            
            Automobile car = (Automobile)value;

            try
            {
                if (!make.Contains(car.Make))
                {
                    throw new ConfigurationErrorsException(
                       "My dream car is not made by " + car.Make);
                }

                // Make sure the year is valid 
                if (car.Year < minYear)
                {

                    throw new ConfigurationErrorsException(
                       "My dream car cannot be older than " + minYear.ToString());
                }

                // Make sure the car can still run on its own
                if (car.Miles > maxMiles)
                {
                  throw new ConfigurationErrorsException(
                        "My dream car drive odometer cannot read more than " + 
                        maxMiles.ToString() + " miles");
                }

                // Validate color
                if (car.Color.ToLower() != color)
                {
                    throw new ConfigurationErrorsException(
                        "My dream car can oly be " + color);
                }
            }
            catch (ConfigurationErrorsException err)
            {
                Console.WriteLine(err.ToString());
            }
        }
    }
  }
Imports System.Collections.Generic
Imports System.Collections
Imports System.Text
Imports System.Configuration


' Show how to create a custom fixed 
' validator. That is a validator whose
' validation parameters are hard code in this
' type.

Public Class FixedValidator
    Inherits ConfigurationValidatorBase
    
    
    Public Overrides Function CanValidate( _
    ByVal type As Type) As Boolean
        Return type Is GetType(Automobile)

    End Function 'CanValidate
    
    
    Public Overrides Sub Validate(ByVal value _
    As Object)

        Dim make As New ArrayList()

        make.Add("Ferrari")
        make.Add("Porsche")
        make.Add("Lamborghini")

        Dim minYear As Integer = 2004
        Dim maxMiles As Long = 100
        Dim color As String = "red"

        Dim car As Automobile = CType(value, Automobile)


        Try
            If Not make.Contains(car.Make) Then
                Throw New ConfigurationErrorsException( _
                "My dream car is not made by " + car.Make)
            End If

            ' Make sure the year is valid 
            If car.Year < minYear Then
                Throw New ConfigurationErrorsException( _
                "My dream car cannot be older than " + _
                minYear.ToString())
            End If


            ' Make sure the car can still run on its own
            If car.Miles > maxMiles Then
                Throw New ConfigurationErrorsException( _
                "My dream car drive odometer cannot read more than " + _
                maxMiles.ToString() + " miles")
            End If


            ' Validate color
            If car.Color.ToLower() <> color Then
                Throw New ConfigurationErrorsException( _
                "My dream car can oly be " + color)
            End If

        Catch err As ConfigurationErrorsException
            Console.WriteLine(err.ToString())
        End Try

    End Sub
End Class

다음 코드 예제에서는 프로그래밍 가능한 유효성 검사기를 만드는 방법을 보여줍니다.


using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;

namespace Samples.AspNet
{

    // Show how to create a custom programmable 
    // validator. That is a validator whose
    // validation parameters can be passed when the
    // validator is applied to a property.
    public class ProgrammableValidator : 
        ConfigurationValidatorBase
    {
        private string pmake;
        private string pcolor;
        private long pmaxMiles;
        private int pminYear;

        public ProgrammableValidator(string make, string color, 
            long maxMiles, int minYear)
        {
            pmake = make;
            pcolor = color;
            pminYear = minYear;
            pmaxMiles = maxMiles;
        }

        public override bool CanValidate(Type type)
        {
            return type == typeof(Automobile);
        }

        public override void Validate(object value)
        {

            Automobile car = (Automobile)value;

            try
            {

                // Validate make
                if (car.Make != pmake)
                {
                    throw new ConfigurationErrorsException(
                       "I do not by cars made by " + car.Make);
                }

                // Validate color
                if (car.Color != pcolor)
                {
                    throw new ConfigurationErrorsException(
                        "My commute car must be " + pcolor);
                }

                // Validate year
                if (car.Year < pminYear)
                {
                    throw new ConfigurationErrorsException(
                        "It's about time you get a new car.");
                }

                // Validate miles
                if (car.Miles > pmaxMiles)
                {
                    throw new ConfigurationErrorsException(
                        "Don't take too long trips with that car.");
                }
            }
            catch (ConfigurationErrorsException err)
            {
                Console.WriteLine(err.ToString());
            }
        }
    }

    public class ProgrammableValidatorAttribute : 
        ConfigurationValidatorAttribute
    {
        private string pmake;
        private string pcolor;
        private int pminYear;
        private long pmaxMiles;

        public string Make
        {
            get { return pmake; }
            set { pmake = value; }
        }

        public string Color
        {
            get { return pcolor; }
            set { pcolor = value; }
        }

        public int MinYear
        {
            get { return pminYear; }
            set { pminYear = value; }
        }
        public long MaxMiles
        {
            get { return pmaxMiles; }
            set { pmaxMiles = value; }
        }

        public ProgrammableValidatorAttribute(string make, string color,
            long miles, int year)
        {
            pmake = make;
            pcolor = color;
            pminYear = year;
            pmaxMiles = miles;
        }

        public override ConfigurationValidatorBase ValidatorInstance
        {
            get
            {
                return new ProgrammableValidator(pmake, pcolor, pmaxMiles, pminYear);
            }
        }
    }
}
Imports System.Collections.Generic
Imports System.Text
Imports System.Configuration



' Show how to create a custom programmable 
' validator. That is a validator whose
' validation parameters can be passed when the
' validator is applied to a property.

Public Class ProgrammableValidator
    Inherits ConfigurationValidatorBase
    Private pmake As String
    Private pcolor As String
    Private pmaxMiles As Long
    Private pminYear As Integer
    
    
    Public Sub New(ByVal make As String, ByVal color As String, ByVal maxMiles As Long, ByVal minYear As Integer) 
        pmake = make
        pcolor = color
        pminYear = minYear
        pmaxMiles = maxMiles
    
    End Sub
    
    
    Public Overrides Function CanValidate( _
    ByVal type As Type) As Boolean
        Return type Is GetType(Automobile)

    End Function 'CanValidate
    
    
    Public Overrides Sub Validate(ByVal value As Object) 
        
        Dim car As Automobile = CType(value, Automobile)
        
        Try
            
            ' Validate make
            If car.Make <> pmake Then
                Throw New ConfigurationErrorsException( _
                "I do not by cars made by " + car.Make)
            End If
            
            ' Validate color
            If car.Color <> pcolor Then
                Throw New ConfigurationErrorsException( _
                "My commute car must be " + pcolor)
            End If
            
            ' Validate year
            If car.Year < pminYear Then
                Throw New ConfigurationErrorsException( _
                "It's about time you get a new car.")
            End If
            
            ' Validate miles
            If car.Miles > pmaxMiles Then
                Throw New ConfigurationErrorsException( _
                "Don't take too long trips with that car.")
            End If
        
        Catch err As ConfigurationErrorsException
            Console.WriteLine(err.ToString())
        End Try
    
    End Sub
End Class



Public Class ProgrammableValidatorAttribute
    Inherits ConfigurationValidatorAttribute
    Private pmake As String
    Private pcolor As String
    Private pminYear As Integer
    Private pmaxMiles As Long
    
    
    
    Public Property Make() As String 
        Get
            Return pmake
        End Get
        Set
            pmake = value
        End Set
    End Property 
    
    Public Property Color() As String 
        Get
            Return pcolor
        End Get
        Set
            pcolor = value
        End Set
    End Property 
    
    Public Property MinYear() As Integer 
        Get
            Return pminYear
        End Get
        Set
            pminYear = value
        End Set
    End Property
    
    Public Property MaxMiles() As Long 
        Get
            Return pmaxMiles
        End Get
        Set
            pmaxMiles = value
        End Set
    End Property
     
    Public Sub New(ByVal make As String, _
    ByVal color As String, ByVal miles As Long, _
    ByVal year As Integer)
        pmake = make
        pcolor = color
        pminYear = year
        pmaxMiles = miles

    End Sub
    

    Public Overrides ReadOnly Property ValidatorInstance() _
    As ConfigurationValidatorBase
        Get
            Return New ProgrammableValidator(pmake, _
            pcolor, pmaxMiles, pminYear)
        End Get
    End Property
End Class

다음 코드 예제에서는 이전 유효성 검사기를 사용하여 사용자 지정 섹션을 만드는 방법을 보여 줍니다.

using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.ComponentModel;
using System.Globalization;

namespace Samples.AspNet
{
    // Define the distinctive 
    // charecteristics of a car.
    public sealed class Automobile
    {
        public enum specification
        {
            make=0, color=1, miles=2, year=3, picture=4
        };

        public string Make;
        public string Color;
        public int Year;
        public long Miles;
        public string Picture;
    }

    // Define a custom section to select a car.
    // This section contains two properties one
    // to define a commute car the other 
    // to define a dream car.
    // This generates a configuration section such as:
    // <Cars commute="Make:AlfaRomeo Color:Blue Miles:10000 Year:2002"
    // dream="Make:Ferrari Color:Red Miles:10 Year:2005" />
    public sealed class SelectCar :
        ConfigurationSection
    {
        // Define your commute car.
        // The ProgrammableValidatorAttribute allows you to define the 
        // chracteristics of your commute car by changing
        // the values you pass to the next.
        // See the ProgrammableValidatorAttribute for details.
        [ProgrammableValidator("AlfaRomeo", "Blue", 10000, 2002)]
        
        // The AutomobileConverter converts between the Automobile
        // object and its related configuration commute attribute 
        // string value. 
        // Refer to AutomobileConverter for details.
        [TypeConverter(typeof(AutomobileConverter))]
        
        // Define the name of the configuration attribute to associate
        // with this property. Enter the default values.
        // Remember these default values must reflect the parameters
        // you entered in the ProgrammableValidator above.
        [ConfigurationProperty("commute", DefaultValue = "Make:AlfaRomeo Color:Blue Miles:10000 Year:2002")]
        public Automobile Commute
        {
            get
            {
                return (Automobile)this["commute"];
            }
            set
            {
                this["commute"] = value;
            }
        }

        // Apply the FixedValidatorAttribute. Here your choice 
        // (dream) is predetermined by the values contained in the
        // FixedValidatorAttribute. Being a dream, you would think 
        // otherwise but that's not the case.
        // See the FixedValidatorAttribute to choose your dream.
         [ConfigurationValidatorAttribute(
          typeof(FixedValidator))]

        // The AutomobileConverter converts between the Automobile
        // object and its related configuration dream attribute 
        // string value. 
        // Refer to AutomobileConverter for details.
        [TypeConverter(typeof(AutomobileConverter))]
        
        [ConfigurationProperty("dream", DefaultValue = "Make:Ferrari Color:Red Miles:10 Year:2005")]
        public Automobile Dream
        {
            get
            {
                return (Automobile)this["dream"];
            }
            set
            {
                this["dream"] = value;
            }
        }

        public SelectCar()
        {
            // Here you put your 
            // initializations, if necessary.
        }
    }    
}
Imports System.Collections.Generic
Imports System.Text
Imports System.Configuration
Imports System.ComponentModel
Imports System.Globalization


' Define the distinctive 
' charecteristics of a car.

NotInheritable Public Class Automobile
    
    Public Enum specification
        make = 0
        color = 1
        miles = 2
        year = 3
        picture = 4
    End Enum 'specification

    Public Make As String
    Public Color As String
    Public Year As Integer
    Public Miles As Long
    Public Picture As String
End Class

' Define a custom section to select a car.
' This section contains two properties one
' to define a commute car the other 
' to define a dream car.
' This generates a configuration section such as:
' <Cars commute="Make:AlfaRomeo Color:Blue Miles:10000 Year:2002"
' dream="Make:Ferrari Color:Red Miles:10 Year:2005" />

NotInheritable Public Class SelectCar
    Inherits ConfigurationSection
    ' Define your commute car.
    ' The ProgrammableValidatorAttribute allows you to define the 
    ' chracteristics of your commute car by changing
    ' the values you pass to the next.
    ' See the ProgrammableValidatorAttribute for details.
    
    <ProgrammableValidator("AlfaRomeo", "Blue", 10000, 2002), _
    TypeConverter(GetType(AutomobileConverter)), _
    ConfigurationProperty("commute", _
    DefaultValue:="Make:AlfaRomeo Color:Blue Miles:10000 Year:2002")> _
    Public Property Commute() As Automobile

        ' The AutomobileConverter converts between the Automobile
        ' object and its related configuration commute attribute 
        ' string value. 
        ' Refer to AutomobileConverter for details.

        ' Define the name of the configuration attribute to associate
        ' with this property. Enter the default values.
        ' Remember these default values must reflect the parameters
        ' you entered in the ProgrammableValidator above.
        Get
            Return CType(Me("commute"), Automobile)
        End Get
        Set(ByVal value As Automobile)
            Me("commute") = value
        End Set
    End Property
    
    ' Apply the FixedValidatorAttribute. Here your choice 
    ' (dream) is predetermined by the values contained in the
    ' FixedValidatorAttribute. Being a dream, you would think 
    ' otherwise but that's not the case.
    ' See the FixedValidatorAttribute to choose your dream.
    
    <ConfigurationValidatorAttribute(GetType(FixedValidator)), _
    TypeConverter(GetType(AutomobileConverter)), _
    ConfigurationProperty("dream", _
    DefaultValue:="Make:Ferrari Color:Red Miles:10 Year:2005")> _
    Public Property Dream() As Automobile

        ' The AutomobileConverter converts between the Automobile
        ' object and its related configuration dream attribute 
        ' string value. 
        ' Refer to AutomobileConverter for details.

        Get
            Return CType(Me("dream"), Automobile)
        End Get
        Set(ByVal value As Automobile)
            Me("dream") = value
        End Set
    End Property
     
    
    Public Sub New() 
    
    End Sub
End Class
' Here you put your 
' initializations, if necessary.

다음 코드 예제에서는 사용자 지정 변환기를 만드는 방법을 보여줍니다.

using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.ComponentModel;
using System.Globalization;

namespace Samples.AspNet
{
    // The AutomobileConverter converts between the Automobile
    // object and its related configuration commute and
    // dream attribute string values. 
    public sealed class AutomobileConverter :
    ConfigurationConverterBase
    {
       
        internal bool ValidateType(object value,
            Type expected)
        {
            bool result;

            if ((value != null) &&
                (value.GetType() != expected))
                result = false;
            else
                result = true;

            return result;
        }

        public override bool CanConvertTo(
            ITypeDescriptorContext ctx, Type type)
        {
            return (type == typeof(Automobile));
        }

        public override bool CanConvertFrom(
            ITypeDescriptorContext ctx, Type type)
        {
            return (type == typeof(Automobile));
        }

        public override object ConvertTo(
            ITypeDescriptorContext ctx, CultureInfo ci,
            object value, Type type)
        {
            string data;

            if (ValidateType(value, typeof(Automobile)))
            {
                string make = (string)(((Automobile)value).Make);
                string color = (string)(((Automobile)value).Color);
                string miles = (string)(((Automobile)value).Miles.ToString());
                string year = (string)(((Automobile)value).Year.ToString());

                data = "Make:" + make + " Color:" + color + 
                        " Miles:" + miles + " Year:" + year;
            }
            else
            {
                data = "Invalid type";
            }

            return data;
        }

        public override object ConvertFrom(
            ITypeDescriptorContext ctx, CultureInfo ci, object data)
        {
            Automobile selectedCar = 
                new Automobile();
 
            string carInfo  = (string)data;

            string[] carSpecs = carInfo.Split(new Char[] { ' ' });

            // selectedCar.Make = carSpecs[0].ToString();
            // selectedCar.Make = carSpecs[0].ToString();

            string make = 
                carSpecs[(int)Automobile.specification.make].ToString();
            string color =
                carSpecs[(int)Automobile.specification.color].ToString();
            string miles =
                carSpecs[(int)Automobile.specification.miles].ToString();
            string year =
                carSpecs[(int)Automobile.specification.year].ToString();

            selectedCar.Make = 
                make.Substring(make.IndexOf(":")+1);
            selectedCar.Color = 
                color.Substring(color.IndexOf(":") + 1);
            selectedCar.Miles = 
                Convert.ToInt32(miles.Substring(miles.IndexOf(":") + 1));
            selectedCar.Year = 
                Convert.ToInt32(year.Substring(year.IndexOf(":") + 1));
            
            return selectedCar;
        }
    }
}
Imports System.Collections.Generic
Imports System.Text
Imports System.Configuration
Imports System.ComponentModel
Imports System.Globalization


' The AutomobileConverter converts between the Automobile
' object and its related configuration commute and
' dream attribute string values. 

NotInheritable Public Class AutomobileConverter
    Inherits ConfigurationConverterBase
    
    
    Friend Function ValidateType(ByVal value As Object, _
    ByVal expected As Type) As Boolean
        Dim result As Boolean

        If Not (value Is Nothing) _
        AndAlso value.GetType() IsNot expected Then
            result = False
        Else
            result = True
        End If
        Return result

    End Function 'ValidateType
    
    
    Public Overrides Function CanConvertTo(ByVal ctx _
    As ITypeDescriptorContext, ByVal type As Type) As Boolean
        Return type Is GetType(Automobile)

    End Function 'CanConvertTo
    
    
    
    Public Overrides Function CanConvertFrom(ByVal ctx _
    As ITypeDescriptorContext, ByVal type As Type) As Boolean
        Return type Is GetType(Automobile)

    End Function 'CanConvertFrom
    
    
    Public Overrides Function ConvertTo(ByVal ctx _
    As ITypeDescriptorContext, ByVal ci As CultureInfo, _
    ByVal value As Object, ByVal type As Type) As Object
        Dim data As String

        If ValidateType(value, GetType(Automobile)) Then
            Dim make As String = _
            CStr(CType(value, Automobile).Make)
            Dim color As String = _
            CStr(CType(value, Automobile).Color)
            Dim miles As String = _
            CStr(CType(value, Automobile).Miles.ToString())
            Dim year As String = _
            CStr(CType(value, Automobile).Year.ToString())

            data = "Make:" + make + " Color:" + color + _
            " Miles:" + miles + " Year:" + year

        Else
            data = "Invalid type"
        End If
        Return data

    End Function 'ConvertTo
    
    
    Public Overrides Function ConvertFrom(ByVal ctx _
    As ITypeDescriptorContext, ByVal ci As CultureInfo, _
    ByVal data As Object) As Object
        Dim selectedCar As New Automobile()

        Dim carInfo As String = CStr(data)

        Dim carSpecs As String() = carInfo.Split(New [Char]() {" "c})

        ' selectedCar.Make = carSpecs[0].ToString();
        ' selectedCar.Make = carSpecs[0].ToString();
        Dim make As String = _
        carSpecs(Fix(Automobile.specification.make)).ToString()
        Dim color As String = _
        carSpecs(Fix(Automobile.specification.color)).ToString()
        Dim miles As String = _
        carSpecs(Fix(Automobile.specification.miles)).ToString()
        Dim year As String = _
        carSpecs(Fix(Automobile.specification.year)).ToString()


        selectedCar.Make = _
        make.Substring(make.IndexOf(":") + 1)
        selectedCar.Color = _
        color.Substring(color.IndexOf(":") + 1)
        selectedCar.Miles = _
        Convert.ToInt32(miles.Substring(miles.IndexOf(":") + 1))
        selectedCar.Year = _
        Convert.ToInt32(year.Substring(year.IndexOf(":") + 1))

        Return selectedCar

    End Function 'ConvertFrom
End Class

다음 코드 예제를 빌드하고 사용자 지정 유효성 검사기 및 포함 하는 섹션을 사용 하는 콘솔 애플리케이션을 만드는 방법을 보여 줍니다.


using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;

namespace Samples.AspNet
{

    class TestingConfigValidatorAttribute
    {
        static TestingConfigValidatorAttribute()
        {
            try
            {

                SelectCar car;

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

                // Create the section entry for the selected car.
                if (config.Sections["Cars"] == null)
                {
                    
                    car = new SelectCar();
                    
                    config.Sections.Add("Cars", car);
                    
                    car.SectionInformation.ForceSave = true;
                    config.Save(ConfigurationSaveMode.Full);
                }
            }
            catch (ConfigurationErrorsException err)
            {
                Console.WriteLine(err.ToString());
            }
        }

        private static void GetCars()
        {

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

                // Get the Cars section.
                SelectCar cars =
                    config.GetSection("Cars") as SelectCar;

                Console.WriteLine("Dream Make: {0} Color: {1} Miles: {2} Year: {3}",
                    cars.Dream.Make, cars.Dream.Color,
                    cars.Dream.Miles, cars.Dream.Year);

                Console.WriteLine("Commute Make: {0} Color: {1} Miles: {2} Year: {3}",
                    cars.Commute.Make, cars.Commute.Color,
                    cars.Commute.Miles, cars.Commute.Year);
            }
            catch (ConfigurationErrorsException err)
            {
                Console.WriteLine(err.ToString());
            }
        }

        private static void NotAllowedCars()
        {

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

                Automobile dreamCar = new Automobile();
                dreamCar.Color = "Red";
                dreamCar.Make = "BMW";
                dreamCar.Miles = 10;
                dreamCar.Year = 2005;

                Automobile commuteCar = new Automobile();
                commuteCar.Color = "Blue";
                commuteCar.Make = "Yugo";
                commuteCar.Miles = 10;
                commuteCar.Year = 1990;

                // Get the Cars section.
                SelectCar cars =
                    config.GetSection("Cars") as SelectCar;

                cars.Dream = dreamCar;
                cars.Commute = commuteCar;
            }
            catch (ConfigurationErrorsException err)
            {
                Console.WriteLine(err.ToString());
            }
        }

        static void Main(string[] args)
        {
            GetCars();
            NotAllowedCars();
        }
    }
}
Imports System.Collections.Generic
Imports System.Text
Imports System.Configuration




Class TestingConfigValidatorAttribute
    
    Shared Sub New() 
        Try
            
            Dim car As SelectCar
            
            ' Get the current configuration file.
            Dim config As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
            
            ' Create the section entry for the selected car.
            If config.Sections("Cars") Is Nothing Then
                
                car = New SelectCar()
                
                config.Sections.Add("Cars", car)
                
                car.SectionInformation.ForceSave = True
                config.Save(ConfigurationSaveMode.Full)
            End If 
        
        Catch err As ConfigurationErrorsException
            Console.WriteLine(err.ToString())
        End Try
    
    End Sub
    
    
    
    Private Shared Sub GetCars() 
        
        Try
            ' Get the current configuration file.
            Dim config As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
            
            ' Get the Cars section.
            Dim cars As SelectCar = config.GetSection("Cars")
            
            Console.WriteLine("Dream Make: {0} Color: {1} Miles: {2} Year: {3}", cars.Dream.Make, cars.Dream.Color, cars.Dream.Miles, cars.Dream.Year)
            
            Console.WriteLine("Commute Make: {0} Color: {1} Miles: {2} Year: {3}", cars.Commute.Make, cars.Commute.Color, cars.Commute.Miles, cars.Commute.Year)
        
        Catch err As ConfigurationErrorsException
            Console.WriteLine(err.ToString())
        End Try
    
    End Sub
    
    
    
    Private Shared Sub NotAllowedCars() 
        
        Try
            ' Get the current configuration file.
            Dim config As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
            
            Dim dreamCar As New Automobile()
            dreamCar.Color = "Red"
            dreamCar.Make = "BMW"
            dreamCar.Miles = 10
            dreamCar.Year = 2005
            
            Dim commuteCar As New Automobile()
            commuteCar.Color = "Blue"
            commuteCar.Make = "Yugo"
            commuteCar.Miles = 10
            commuteCar.Year = 1990
            
            ' Get the Cars section.
            Dim cars As SelectCar = config.GetSection("Cars")
              
            cars.Dream = dreamCar
            cars.Commute = commuteCar
        
        Catch err As ConfigurationErrorsException
            Console.WriteLine(err.ToString())
        End Try
    
    End Sub
    
    
    Shared Sub Main(ByVal args() As String) 
        GetCars()
        NotAllowedCars()
    
    End Sub
End Class

다음 코드 예제는 이전 예제에서 사용한 구성 발췌입니다.

<?xml version="1.0" encoding="utf-8"?>  
<configuration>  
    <configSections>  
        <section name="Cars" type="Samples.AspNet.SelectCar, ConfigValidatorAttribute, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" allowLocation="false" allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" restartOnExternalChanges="true" requirePermission="true" />  
    </configSections>  
    <Cars commute="Make:AlfaRomeo Color:Blue Miles:10000 Year:2002"  
        dream="Make:Ferrari Color:Red Miles:10 Year:2005" />  
</configuration>  

설명

모든 ASP.NET 구성 표준 유효성 검사기 특성 형식은 에서 ConfigurationValidatorAttribute파생됩니다. 이 형식을 사용하여 고유한 사용자 지정 유효성 검사기 특성을 만들 수 있습니다.

생성자

ConfigurationValidatorAttribute()

ConfigurationValidatorAttribute 클래스의 새 인스턴스를 초기화합니다.

ConfigurationValidatorAttribute(Type)

지정된 유효성 검사기 형식을 사용하여 ConfigurationValidatorAttribute 클래스의 새 인스턴스를 초기화합니다.

속성

TypeId

파생 클래스에서 구현된 경우 이 Attribute에 대한 고유 식별자를 가져옵니다.

(다음에서 상속됨 Attribute)
ValidatorInstance

유효성 검사기 특성 인스턴스를 가져옵니다.

ValidatorType

유효성 검사기 특성의 형식을 가져옵니다.

메서드

Equals(Object)

이 인스턴스가 지정된 개체와 같은지를 나타내는 값을 반환합니다.

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

이 인스턴스의 해시 코드를 반환합니다.

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

현재 인스턴스의 Type을 가져옵니다.

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

파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다.

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

파생 클래스에서 재정의된 경우 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다.

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

현재 Object의 단순 복사본을 만듭니다.

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

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

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

이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다.

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

인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다.

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

개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1).

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

개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다.

(다음에서 상속됨 Attribute)

적용 대상

추가 정보