Attributes Property

Type.Attributes Property

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Gets the attributes associated with the Type.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

'Declaration
Public ReadOnly Property Attributes As TypeAttributes

Property Value

Type: System.Reflection.TypeAttributes
A TypeAttributes object representing the attribute set of the Type, unless the Type represents a generic type parameter, in which case the value is unspecified.

If the current Type represents a constructed generic type, this property returns the attributes of the generic type definition. For example, the attributes returned for MyGenericClass<int> (MyGenericClass(Of Integer) in Visual Basic) are the attributes of MyGenericClass<T> (MyGenericClass(Of T) in Visual Basic).

If the current Type represents a generic type parameter — that is, if the IsGenericParameter property returns true — the TypeAttributes value returned by this property is unspecified.

The following example shows the use of the Type.Attributes property. The fact that there is a member in each of several groupings that has the value zero means that you must use masks before testing for those members.

For most purposes, properties like IsClass, IsAutoLayout, and IsSpecialName are easier to use than type attributes.


Imports System.Reflection

Friend Structure S
    Public X As Integer
End Structure

Public MustInherit Class Example

    Protected NotInheritable Class NestedClass
    End Class

    Public Interface INested
    End Interface

    Private Shared outputBlock As System.Windows.Controls.TextBlock

    Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)

        Example.outputBlock = outputBlock

        DisplayAttributes(GetType(Example))
        DisplayAttributes(GetType(NestedClass))
        DisplayAttributes(GetType(INested))
        DisplayAttributes(GetType(S))

    End Sub

    Private Shared Sub DisplayAttributes(ByVal t As Type)

        outputBlock.Text &= "Attributes for type " & t.Name & ":" & vbLf

        Dim attr As TypeAttributes = t.Attributes

        ' To test for visibility attributes, you must use the visibility
        ' mask.
        Dim visibility As TypeAttributes = attr And TypeAttributes.VisibilityMask
        Select Case visibility
            Case TypeAttributes.NotPublic:
                outputBlock.Text &= "   ...is not Public" & vbLf
            Case TypeAttributes.Public:
                outputBlock.Text &= "   ...is Public" & vbLf
            Case TypeAttributes.NestedPublic:
                outputBlock.Text &= "   ...is nested and Public" & vbLf
            Case TypeAttributes.NestedPrivate:
                outputBlock.Text &= "   ...is nested and Private" & vbLf
            Case TypeAttributes.NestedFamANDAssem:
                outputBlock.Text &= "   ...is nested, and inheritable only within the assembly" & _
                   vbLf & "         (cannot be declared in Visual Basic)" & vbLf
            Case TypeAttributes.NestedAssembly:
                outputBlock.Text &= "   ...is nested and Friend" & vbLf
            Case TypeAttributes.NestedFamily:
                outputBlock.Text &= "   ...is nested and Protected" & vbLf
            Case TypeAttributes.NestedFamORAssem:
                outputBlock.Text &= "   ...is nested and Protected Friend" & vbLf
        End Select

        Dim layout As TypeAttributes = attr And TypeAttributes.LayoutMask
        Select Case layout
            Case TypeAttributes.AutoLayout:
                outputBlock.Text &= "   ...is AutoLayout" & vbLf
            Case TypeAttributes.SequentialLayout:
                outputBlock.Text &= "   ...is SequentialLayout" & vbLf
            Case TypeAttributes.ExplicitLayout:
                outputBlock.Text &= "   ...is ExplicitLayout" & vbLf
        End Select

        Dim classSemantics As TypeAttributes = attr And TypeAttributes.ClassSemanticsMask
        Select Case classSemantics
            Case TypeAttributes.Class:
                If t.IsValueType Then
                    outputBlock.Text &= "   ...is a value type" & vbLf
                Else
                    outputBlock.Text &= "   ...is a class" & vbLf
                End If
            Case TypeAttributes.Interface:
                outputBlock.Text &= "   ...is an interface" & vbLf
        End Select

        If 0 <> (attr And TypeAttributes.Abstract) Then _
            outputBlock.Text &= "   ...is MustInherit" & vbLf

        If 0 <> (attr And TypeAttributes.Sealed) Then _
            outputBlock.Text &= "   ...is NotInheritable" & vbLf
   End Sub 
End Class 

' This example produces the following output:
'
'Attributes for type Example:
'    ...is Public
'    ...is AutoLayout
'    ...is a class
'    ...is MustInherit
'Attributes for type NestedClass:
'    ...is nested and Protected
'    ...is AutoLayout
'    ...is a class
'    ...is NotInheritable
'Attributes for type INested:
'    ...is nested and Public
'    ...is AutoLayout
'    ...is an interface
'    ...is MustInherit
'Attributes for type S:
'    ...is not Public
'    ...is SequentialLayout
'    ...is a value type
'    ...is NotInheritable


Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Windows Phone

Show:
© 2017 Microsoft