PositiveTimeSpanValidator 类

定义

TimeSpan 对象进行验证。Provides validation of a TimeSpan object. 此类不能被继承。This class cannot be inherited.

public ref class PositiveTimeSpanValidator : System::Configuration::ConfigurationValidatorBase
public class PositiveTimeSpanValidator : System.Configuration.ConfigurationValidatorBase
type PositiveTimeSpanValidator = class
    inherit ConfigurationValidatorBase
Public Class PositiveTimeSpanValidator
Inherits ConfigurationValidatorBase
继承
PositiveTimeSpanValidator

示例

下面的代码示例演示如何使用 PositiveTimeSpanValidator 类型。The following code example demonstrates how to use the PositiveTimeSpanValidator type.

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 对象满足特定的条件。The PositiveTimeSpanValidator is used to ensure a TimeSpan object meets specific criteria. CanValidate方法确定所验证的对象类型是否与预期的类型匹配。The CanValidate method determines whether the object type being validated matches the expected type. 要验证的对象作为方法的参数进行传递 ValidateThe object being validated is passed as a parameter of the Validate method. 若要通过验证,要验证的对象必须为正值 TimeSpanTo pass validation, the object being validated must be a positive TimeSpan value.

构造函数

PositiveTimeSpanValidator()

初始化 PositiveTimeSpanValidator 类的新实例。Initializes a new instance of the PositiveTimeSpanValidator class.

方法

CanValidate(Type)

确定是否可验证该对象类型。Determines whether the object type can be validated.

Equals(Object)

确定指定对象是否等于当前对象。Determines whether the specified object is equal to the current object.

(继承自 Object)
GetHashCode()

作为默认哈希函数。Serves as the default hash function.

(继承自 Object)
GetType()

获取当前实例的 TypeGets the Type of the current instance.

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。Creates a shallow copy of the current Object.

(继承自 Object)
ToString()

返回表示当前对象的字符串。Returns a string that represents the current object.

(继承自 Object)
Validate(Object)

确定对象的值是否有效。Determines whether the value of an object is valid.

适用于

另请参阅