VB.Net/Language Basics/Attribute

Материал из VB Эксперт
Перейти к: навигация, поиск

Define and use Attribute to track bugs

<source lang="vbnet"> Imports System Imports System.Reflection

Public Class MainClass

   Shared Sub Main(  )
        Dim mm As New MyMath(  )
        Console.WriteLine("Calling DoFunc(10). Result: {0}", mm.DoFunc1(10))
        Dim inf As System.Reflection.MemberInfo = GetType(MyMath)
        Dim attributes(  ) As Attribute
        attributes = _
           inf.GetCustomAttributes(GetType(BugFixAttribute), False)
        Dim attribute As [Object]
        For Each attribute In attributes
            Dim bfa As BugFixAttribute = CType(attribute, BugFixAttribute)
            Console.WriteLine(ControlChars.Lf + "BugID: {0}", bfa.BugID)
            Console.WriteLine("Programmer: {0}", bfa.Programmer)
            Console.WriteLine("Date: {0}", bfa.theDate)
            Console.WriteLine("Comment: {0}", bfa.rument)
        Next attribute
   End Sub
 

End Class

<AttributeUsage(AttributeTargets.Class Or _
AttributeTargets.Constructor Or _
AttributeTargets.Field Or _
AttributeTargets.Method Or _
AttributeTargets.Property, AllowMultiple:=True)> _
Public Class BugFixAttribute
    Inherits System.Attribute
    Private mBugID As Integer
    Private mComment As String
    Private mDate As String
    Private mProgrammer As String
    Public Sub New( _
        ByVal bugID As Integer, _
        ByVal programmer As String, _
        ByVal theDate As String)
        mBugID = bugID
        mProgrammer = programmer
        mDate = theDate
    End Sub
    Public ReadOnly Property BugID(  ) As Integer
        Get
            Return mBugID
        End Get
    End Property
    Public Property Comment(  ) As String
        Get
            Return mComment
        End Get
        Set(ByVal Value As String)
            mComment = Value
        End Set
    End Property
    Public ReadOnly Property theDate(  ) As String
        Get
            Return mDate
        End Get
    End Property
    Public ReadOnly Property Programmer(  ) As String
        Get
            Return mProgrammer
        End Get
    End Property
End Class
<BugFixAttribute(121, "James Band", "07/07/07", _
 Comment:="Fixed one error")> _
Public Class MyMath
    Public Function DoFunc1(ByVal param1 As Double) As Double
        Return param1 
    End Function
End Class
          
      </source>


Obsolete attribute

<source lang="vbnet"> Imports System Imports System.Text Imports System.Text.RegularExpressions

Public Class MainClass

   Shared Sub Main(  )
      Dim d As Demo = New Demo()
      d.Method1()
   End Sub "Main
  

End Class

 <Serializable()> Public Class Demo
   <Obsolete("Use Method2 instead.")> Public Sub Method1()
   End Sub
   <System.ObsoleteAttribute("Use Method2 instead.", True)> Public Sub Method2()
     "Old implementation
   End Sub
   Public Sub Method3()
     " New implementation ...
   End Sub
 End Class
 <Serializable(), Obsolete("No longer used.")> Public Class Test
 End Class
          
      </source>