PositiveTimeSpanValidator 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
개체의 TimeSpan 유효성 검사를 제공합니다. 이 클래스는 상속할 수 없습니다.
public ref class PositiveTimeSpanValidator : System::Configuration::ConfigurationValidatorBase
public class PositiveTimeSpanValidator : System.Configuration.ConfigurationValidatorBase
type PositiveTimeSpanValidator = class
inherit ConfigurationValidatorBase
Public Class PositiveTimeSpanValidator
Inherits ConfigurationValidatorBase
- 상속
예제
다음 코드 예제에서는 형식을 사용하는 방법을 보여 줍니다 PositiveTimeSpanValidator .
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.ComponentModel;
namespace Samples.AspNet
{
// Implements a custom validator attribute.
[AttributeUsage(AttributeTargets.Property)]
public sealed class CustomValidatorAttribute :
ConfigurationValidatorAttribute
{
public CustomValidatorAttribute()
{
}
public CustomValidatorAttribute(Type validator)
: base(validator)
{
}
new public Type ValidatorType
{
get
{ return GetType(); }
}
public override ConfigurationValidatorBase ValidatorInstance
{
get
{
// Create validator.
return new PositiveTimeSpanValidator();
}
}
}
// Implements a custom section class.
public class SampleSection : ConfigurationSection
{
[ConfigurationProperty("name", DefaultValue = "MyBuildRoutine",
IsRequired = true)]
[StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'\"|\\",
MinLength = 1, MaxLength = 60)]
public string Name
{
get
{
return (string)this["name"];
}
set
{
this["name"] = value;
}
}
[ConfigurationProperty("BuildStartTime", IsRequired = true,
DefaultValue = "09:00:00")]
public TimeSpan BuildStartTime
{
get
{
TimeSpanConverter myTSC = new TimeSpanConverter();
return (TimeSpan)this["BuildStartTime"];
}
set
{
this["BuildStartTime"] = value.ToString();
}
}
[ConfigurationProperty("BuildEndTime", IsRequired = true,
DefaultValue = "17:00:00")]
public TimeSpan BuildEndTime
{
get
{
TimeSpanConverter myTSC = new TimeSpanConverter();
return (TimeSpan)this["BuildEndTime"];
}
set
{
this["BuildEndTime"] = value.ToString();
}
}
}
// Implements the console user interface.
class TestingCustomValidatorAttribute
{
// Shows how to use the ValidatorInstance method.
public static void GetCustomValidatorInstance()
{
ConfigurationValidatorBase valBase;
CustomValidatorAttribute customValAttr;
customValAttr = new CustomValidatorAttribute();
SampleSection sampleSection =
ConfigurationManager.GetSection("MyDailyProcess") as SampleSection;
TimeSpanConverter myTSC = new TimeSpanConverter();
TimeSpan StartTimeSpan = (TimeSpan)myTSC.ConvertFromString(sampleSection.BuildStartTime.ToString());
TimeSpan EndTimeSpan = (TimeSpan)myTSC.ConvertFromString(sampleSection.BuildEndTime.ToString());
TimeSpan resultTimeSpan = EndTimeSpan - StartTimeSpan;
try
{
// Determine if the Validator can validate
// the type it contains.
valBase = customValAttr.ValidatorInstance;
if (valBase.CanValidate(resultTimeSpan.GetType()))
{
// Validate the TimeSpan using a
// custom PositiveTimeSpanValidator.
valBase.Validate(resultTimeSpan);
}
}
catch (ArgumentException e)
{
// Store error message.
string msg = e.Message.ToString();
#if DEBUG
Console.WriteLine("Error: {0}", msg);
#endif
}
}
// Create required sections.
static void CreateSection()
{
// Get the current configuration (file).
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);
// Define the sample section.
SampleSection sampleSection;
// Create the handler section named MyDailyProcess
// in the <configSections>. Also, create the
// <MyDailyProcess> target section
// in <configuration>.
if (config.Sections["MyDailyProcess"] == null)
{
sampleSection = new SampleSection();
config.Sections.Add("MyDailyProcess", sampleSection);
sampleSection.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);
}
}
static void DisplaySectionProperties()
{
SampleSection sampleSection =
ConfigurationManager.GetSection("MyDailyProcess") as SampleSection;
if (sampleSection == null)
{
Console.WriteLine("Failed to load section.");
}
else
{
Console.WriteLine("Defaults:");
Console.WriteLine(" Name: {0}", sampleSection.Name);
Console.WriteLine(" BuildStartTime: {0}", sampleSection.BuildStartTime);
Console.WriteLine(" BuildEndTime: {0}", sampleSection.BuildEndTime);
}
}
static void Main(string[] args)
{
Console.WriteLine("[Create a section]");
CreateSection();
Console.WriteLine("[Display section information]");
DisplaySectionProperties();
// Show how to use the ValidatorInstance method.
GetCustomValidatorInstance();
// Display and wait.
Console.ReadLine();
}
}
}
Imports System.Collections.Generic
Imports System.Text
Imports System.Configuration
Imports System.ComponentModel
Namespace Samples.AspNet.Configuration
' Implements a custom validator attribute.
<AttributeUsage(AttributeTargets.Property)> _
Public NotInheritable Class CustomValidatorAttribute
Inherits ConfigurationValidatorAttribute
Public Sub New()
End Sub
Public Sub New(ByVal validator As Type)
MyBase.New(validator)
End Sub
Public Shadows ReadOnly Property _
ValidatorType() As Type
Get
Return [GetType]()
End Get
End Property
Public Overrides ReadOnly Property ValidatorInstance() As ConfigurationValidatorBase
Get
' Create validator.
Return New PositiveTimeSpanValidator()
End Get
End Property
End Class
' Implements a custom section class.
Public Class SampleSection
Inherits ConfigurationSection
<ConfigurationProperty("name", DefaultValue:="MyBuildRoutine", IsRequired:=True), _
StringValidator(InvalidCharacters:=" ~!@#$%^&*()[]{}/;'""|\", _
MinLength:=1, MaxLength:=60)> _
Public Property Name() As String
Get
Return CType(Me("name"), String)
End Get
Set(ByVal Value As String)
Me("name") = Value
End Set
End Property
<ConfigurationProperty("BuildStartTime", IsRequired:=True, _
DefaultValue:="09:00:00")> _
Public Property BuildStartTime() As TimeSpan
Get
Dim myTSC As TimeSpanConverter = New TimeSpanConverter()
Return CType(Me("BuildStartTime"), TimeSpan)
End Get
Set(ByVal Value As TimeSpan)
Me("BuildStartTime") = Value.ToString()
End Set
End Property
<ConfigurationProperty("BuildEndTime", IsRequired:=True, _
DefaultValue:="17:00:00")> _
Public Property BuildEndTime() As TimeSpan
Get
Dim myTSC As TimeSpanConverter = New TimeSpanConverter()
Return CType(Me("BuildEndTime"), TimeSpan)
End Get
Set(ByVal Value As TimeSpan)
Me("BuildEndTime") = Value.ToString()
End Set
End Property
End Class
' Implements the console user interface.
Class TestingCustomValidatorAttribute
' Shows how to use the ValidatorInstance method.
Public Shared Sub GetCustomValidatorInstance()
Dim valBase As ConfigurationValidatorBase
Dim customValAttr As CustomValidatorAttribute
customValAttr = New CustomValidatorAttribute()
Dim sampleSection As SampleSection = ConfigurationManager.GetSection("MyDailyProcess")
Dim myTSC As TimeSpanConverter = New TimeSpanConverter()
Dim StartTimeSpan As TimeSpan = CType(myTSC.ConvertFromString(SampleSection.BuildStartTime.ToString()), TimeSpan)
Dim EndTimeSpan As TimeSpan = CType(myTSC.ConvertFromString(SampleSection.BuildEndTime.ToString()), TimeSpan)
Dim resultTimeSpan As TimeSpan = EndTimeSpan - StartTimeSpan
Try
' Determine if the Validator can validate
' the type it contains.
valBase = customValAttr.ValidatorInstance
If valBase.CanValidate(resultTimeSpan.GetType()) Then
' Validate the TimeSpan using a
' custom PositiveTimeSpanValidator.
valBase.Validate(resultTimeSpan)
End If
Catch e As ArgumentException
' Store error message.
Dim msg As String = e.Message.ToString()
#If DEBUG Then
Console.WriteLine("Error: {0}", msg)
#End If
End Try
End Sub
' Create required sections.
Shared Sub CreateSection()
' Get the current configuration (file).
Dim config As System.Configuration.Configuration = _
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
' Define the sample section.
Dim sampleSection As SampleSection
' Create the handler section named MyDailyProcess
' in the <configSections>. Also, create the
' <MyDailyProcess> target section
' in <configuration>.
If config.Sections("MyDailyProcess") Is Nothing Then
sampleSection = New SampleSection()
config.Sections.Add("MyDailyProcess", sampleSection)
sampleSection.SectionInformation.ForceSave = True
config.Save(ConfigurationSaveMode.Full)
End If
End Sub
Shared Sub DisplaySectionProperties()
Dim sampleSection As SampleSection = ConfigurationManager.GetSection("MyDailyProcess")
If SampleSection Is Nothing Then
Console.WriteLine("Failed to load section.")
Else
Console.WriteLine("Defaults:")
Console.WriteLine(" Name: {0}", SampleSection.Name)
Console.WriteLine(" BuildStartTime: {0}", SampleSection.BuildStartTime)
Console.WriteLine(" BuildEndTime: {0}", SampleSection.BuildEndTime)
End If
End Sub
Shared Sub Main(ByVal args() As String)
Console.WriteLine("[Create a section]")
CreateSection()
Console.WriteLine("[Display section information]")
DisplaySectionProperties()
' Show how to use the ValidatorInstance method.
GetCustomValidatorInstance()
' Display and wait.
Console.ReadLine()
End Sub
End Class
End Namespace
설명
개체 PositiveTimeSpanValidator 가 특정 조건을 충족하는지 확인하는 TimeSpan 데 사용됩니다. 메서드는 CanValidate 유효성을 검사할 개체 형식이 예상된 형식과 일치하는지 여부를 결정합니다. 유효성을 검사하는 개체는 메서드의 Validate 매개 변수로 전달됩니다. 유효성 검사를 통과하려면 유효성을 검사하는 개체가 양 TimeSpan 수 값이어야 합니다.
생성자
| Name | Description |
|---|---|
| PositiveTimeSpanValidator() |
PositiveTimeSpanValidator 클래스의 새 인스턴스를 초기화합니다. |
메서드
| Name | Description |
|---|---|
| CanValidate(Type) |
개체 형식의 유효성을 검사할 수 있는지 여부를 결정합니다. |
| Equals(Object) |
지정된 개체가 현재 개체와 같은지 여부를 확인합니다. (다음에서 상속됨 Object) |
| GetHashCode() |
기본 해시 함수로 사용됩니다. (다음에서 상속됨 Object) |
| GetType() |
현재 인스턴스의 Type 가져옵니다. (다음에서 상속됨 Object) |
| MemberwiseClone() |
현재 Object단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
| ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
| Validate(Object) |
개체의 값이 유효한지 여부를 확인합니다. |