Provides validation of a TimeSpan object. This class cannot be inherited.
System.Configuration.ConfigurationValidatorBase
System.Configuration.PositiveTimeSpanValidator
Namespace: System.Configuration
Assembly: System.Configuration (in System.Configuration.dll)
Public Class PositiveTimeSpanValidator _ Inherits ConfigurationValidatorBase
public class PositiveTimeSpanValidator : ConfigurationValidatorBase
public ref class PositiveTimeSpanValidator : public ConfigurationValidatorBase
type PositiveTimeSpanValidator = class inherit ConfigurationValidatorBase end
The PositiveTimeSpanValidator type exposes the following members.
| Name | Description | |
|---|---|---|
|
PositiveTimeSpanValidator | Initializes a new instance of the PositiveTimeSpanValidator class. |
| Name | Description | |
|---|---|---|
|
CanValidate | Determines whether the object type can be validated. (Overrides ConfigurationValidatorBase.CanValidate(Type).) |
|
Equals(Object) | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) |
|
Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) |
|
GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
|
GetType | Gets the Type of the current instance. (Inherited from Object.) |
|
MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
|
ToString | Returns a string that represents the current object. (Inherited from Object.) |
|
Validate | Determines whether the value of an object is valid. (Overrides ConfigurationValidatorBase.Validate(Object).) |
The PositiveTimeSpanValidator is used to ensure a TimeSpan object meets specific criteria. The CanValidate method determines whether the object type being validated matches the expected type. The object being validated is passed as a parameter of the Validate method. To pass validation, the object being validated must be a positive TimeSpan value.
The following code example demonstrates how to use the PositiveTimeSpanValidator type.
Imports System 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 'New Public Sub New(ByVal validator As Type) MyBase.New(validator) End Sub 'New 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
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(); } } }
.NET Framework
Supported in: 4, 3.5, 3.0, 2.0.NET Framework Client Profile
Supported in: 4, 3.5 SP1Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.