Regex 验证块未正确验证Enterprise Library 5.0中的属性
我已经使用企业库配置控制台正确配置了验证块 我的app.config文件如下所示(我仅在此处显示验证部分): 请注意:Regex 验证块未正确验证Enterprise Library 5.0中的属性,regex,vb.net,validation,enterprise-library,enterprise-library-5,Regex,Vb.net,Validation,Enterprise Library,Enterprise Library 5,我已经使用企业库配置控制台正确配置了验证块 我的app.config文件如下所示(我仅在此处显示验证部分): 请注意: RemoteIPAddress是一个IPv4地址,因此我构建了以下常规 要检查它的表达式: \(25[0-5]| 2[0-4][0-9][0-9]|[01]|[0-9][0-9]|[01]|[0-5][0-9][0-9][0-9]|[01]|[0-4][0-9]|[01]|[0-9][0-9]|(25[0-5]| 2[0-4][0-4][0-9]|[01]|[0-9]|[0-
- RemoteIPAddress是一个IPv4地址,因此我构建了以下常规 要检查它的表达式: \(25[0-5]| 2[0-4][0-9][0-9]|[01]|[0-9][0-9]|[01]|[0-5][0-9][0-9][0-9]|[01]|[0-4][0-9]|[01]|[0-9][0-9]|(25[0-5]| 2[0-4][0-4][0-9]|[01]|[0-9]|[0-9]|[0-9]|[0-9]|0]
- RemotePort是包含范围为0-65535的端口的属性
- 区域性是包含语言区域性名称的属性,因此我构建正则表达式: ^[A-Za-z]{1,8}(-A-Za-z0-9]{1,8})*$
Private Sub InitSettings()
Settings.RemoteIPAddress = My.Settings.RemoteIPAddress
Settings.RemotePort = My.Settings.RemotePort
Settings.Culture = My.Settings.Culture
End Sub
然后,我使用以下验证代码验证“settings”类中的设置:
Public Sub Main()
' Initialize application settings
Me.InitSettings()
' Validate current application settings
results = Validation.Validate(New Settings)
If results.IsValid Then
' Initiate Background worker thread
Me.DoTask()
End If
End Sub
我在验证方面有两个问题:
- 计数的值为0
- IsValid的值为true
- validationResults的值计数为0
- 扩展“结果”不会产生结果
似乎没有正确应用验证,那么我做错了什么?我发现属性不能标记为共享。如果是这样,企业库验证块将不起作用。所以从共享属性中删除它似乎是可行的。为什么?验证应用程序块仅验证实例变量(属性、字段)。如果您想验证共享/静态变量,那么可以查看自验证,或者修改块以验证共享变量。或者,如果您更改设计,使设置类成为带有实例变量的单例类,那么它将与块一起工作。我发现属性不能标记为共享。如果是这样,企业库验证块将不起作用。所以从共享属性中删除它似乎是可行的。为什么?验证应用程序块仅验证实例变量(属性、字段)。如果您想验证共享/静态变量,那么可以查看自验证,或者修改块以验证共享变量。或者,如果您更改设计,使设置类成为带有实例变量的单例类,那么它将与块一起工作。
Private Sub InitSettings()
Settings.RemoteIPAddress = My.Settings.RemoteIPAddress
Settings.RemotePort = My.Settings.RemotePort
Settings.Culture = My.Settings.Culture
End Sub
Public Sub Main()
' Initialize application settings
Me.InitSettings()
' Validate current application settings
results = Validation.Validate(New Settings)
If results.IsValid Then
' Initiate Background worker thread
Me.DoTask()
End If
End Sub