[Mono-list] mBas
   
    Marco Ridoni
     
    marco.ridoni@virgilio.it
       
    Mon, 27 Jan 2003 20:11:09 +0100
    
    
  
I have added support for attributes to mBas (beside other fixes).  The
following code compiles and runs fine. The area which needs more attention
is array declaration and access, as you can see yourself from the apparently
weird access method used to retrieve an Annotation object - calls like
'MyAnnotation = tc_type.GetCustomAttributes(False)(0)' wouldn't work mainly
because the grammar still fails to recognize them. I'm currently working on
this.
Marco Ridoni
marco.ridoni@virgilio.it
P.S. I just realized I forgot to remove some code which generates debug
output while compiling. I wil take care of it ASAP
=========================
Imports System
Imports System.Reflection
<AttributeUsage(AttributeTargets.All, Inherited:=True, AllowMultiple:=True)>
_
Public Class Annotation
    Inherits System.Attribute
    Protected strAuthor As String
    Protected strComment As String
    Public Sub New(ByVal Author As String, ByVal Comment As String)
        strAuthor = Author
        strComment = Comment
    End Sub
    Public Property Author() As String
        Get
            Author = strAuthor
        End Get
        Set(Value As String)
            strAuthor = CStr(Value)
        End Set
    End Property
    Public Property Comment() As String
        Get
            Return strComment
        End Get
        Set(Value As String)
            strComment = CStr(Value)
        End Set
    End Property
End Class
<Annotation("mr", "This is a test")> _
Public Class TestClass
 Public Sub New(a As integer,b As integer,c As integer)
 End Sub
 Public Sub SayWhoYouAre()
 End Sub
End Class
Module Test
Dim tc As TestClass
Public Sub Main()
 Dim tc_type As Type
 Dim MyAnnotation As Annotation
 Dim obj(2) As Object
 tc = New TestClass(2,3,4)
 tc_type = tc.GetType()
 obj = tc_type.GetCustomAttributes(False)
 MyAnnotation = CType (obj(0), Annotation)
 Console.WriteLine("Author is '" & MyAnnotation.Author & "'")
 Console.WriteLine("Comment is '" & MyAnnotation.Comment & "'")
End Sub
End Module