【发布时间】:2016-04-14 02:45:01
【问题描述】:
我正在尝试使用 postsharp LocationInterceptionAspect 拦截属性设置器,以在将值设置为私有成员之前执行一些验证。它可以正常工作,但是如果值数据类型与属性数据类型不兼容,它会抛出 InvalidCastException 并且不会调用 OnSetValue。有什么办法可以笼统地捕获此异常,使值无效,然后使用 setter 进行处理?
属性验证器方面:
<Serializable()>
Public Class PropertyValidatorAttribute
Inherits LocationInterceptionAspect
Public Overrides Sub OnSetValue(args As LocationInterceptionArgs)
'Perform validation here
args.ProceedSetValue()
End Sub
End Class
使用方面的类:
Public Enum MyEnum
A = 1
B = 2
End Enum
Public Class SampleClass
<PropertyValidator()>
Public Property SomeProperty As MyEnum
End Class
主要:
Sub Main()
Dim x As New SampleClass()
x.SomeProperty = "X"
End Sub
【问题讨论】: