PositiveTimeSpanValidator Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zapewnia walidację TimeSpan obiektu. Klasa ta nie może być dziedziczona.
public ref class PositiveTimeSpanValidator : System::Configuration::ConfigurationValidatorBase
public class PositiveTimeSpanValidator : System.Configuration.ConfigurationValidatorBase
type PositiveTimeSpanValidator = class
inherit ConfigurationValidatorBase
Public Class PositiveTimeSpanValidator
Inherits ConfigurationValidatorBase
- Dziedziczenie
Przykłady
W poniższym przykładzie kodu pokazano, jak używać PositiveTimeSpanValidator typu.
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
Uwagi
Służy PositiveTimeSpanValidator do zapewnienia, że TimeSpan obiekt spełnia określone kryteria. Metoda CanValidate określa, czy typ obiektu, który jest weryfikowany, jest zgodny z oczekiwanym typem. Zweryfikowany obiekt jest przekazywany jako parametr Validate metody. Aby przejść walidację, weryfikowany obiekt musi być wartością dodatnią TimeSpan .
Konstruktory
PositiveTimeSpanValidator() |
Inicjuje nowe wystąpienie klasy PositiveTimeSpanValidator. |
Metody
CanValidate(Type) |
Określa, czy typ obiektu można zweryfikować. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera bieżące wystąpienie. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Validate(Object) |
Określa, czy wartość obiektu jest prawidłowa. |