近来比较关注元数据。元数据在NET中发挥着举足轻重的作用,理解和掌握元数据还真不是一朝一夕的事,自己估计断断续续的要半年的时间才能入门。我现在暂时将它理解成这样:元数据是类和类元素的解释。
现在看看ObsoleteAttribute。
MSDN说,“标记不再使用的程序元素。无法继承此类”。备注是如此解释,“ObsoleteAttribute 可适用于除程序集、模块、参数或返回值以外的所有程序元素。将元素标记为过时可以通知用户:该元素在产品的未来版本中将被移除”。
看了它的两个示例,自己写一个:
Public Class ComTax
<Obsolete("注意:十月一日起必须修改税率值!")> Protected _Rate As Double = 0.98
Public ReadOnly Property Rate() As Double
Get
Return _Rate '在编辑代码时,光标移到这时会提示: “_Rate”已过时,"注意:十月一日起必须修改税率值!"
End Get
End Property
End Class
Public Class TestTax
Shared Sub
Main()
Dim a As New ComTax
Console.WriteLine(a.Rate)
End Sub
End Class
这是在IDE编辑时的情形:
当我们编译它的时候,编译通过,但提示警告信息:
当把<Obsolete("注意:十月一日起必须修改税率值!")>改为
<Obsolete("注意:十月一日起必须修改税率值!",True)>时,编译失败。
我原来想ObsoleteAttribute能否用来控制版本更新,到了十月一日时_Rate自动失效引发程序运行错误,但找不到实现的办法。估计ObsoleteAttribute只是用来控制版本代码,特别是在团队作业时,审核者对提交的代码进行批阅,如此函数需要斟酌,则<Obsolete("效率差,请在适当时间改进")>;严重时,则<Obsolete("效率极差,请重新考虑"),True>。