PositiveTimeSpanValidator Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
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
- Inheritance
Examples
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
Remarks
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.
Constructors
PositiveTimeSpanValidator() |
Initializes a new instance of the PositiveTimeSpanValidator class. |
Methods
CanValidate(Type) |
Determines whether the object type can be validated. |
Equals(Object) |
Determines whether the specified object is equal to the current object. (Inherited from Object) |
GetHashCode() |
Serves as the default hash function. (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(Object) |
Determines whether the value of an object is valid. |