TypeAttributes Enumeration

Specifies type attributes.

This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.

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

'Declaration
<FlagsAttribute> _
<ComVisibleAttribute(True)> _
Public Enumeration TypeAttributes

Member nameDescription
Supported by Silverlight for Windows PhoneSupported by Xbox 360VisibilityMaskSpecifies type visibility information.
Supported by Silverlight for Windows PhoneSupported by Xbox 360NotPublicSpecifies that the class is not public.
Supported by Silverlight for Windows PhoneSupported by Xbox 360PublicSpecifies that the class is public.
Supported by Silverlight for Windows PhoneSupported by Xbox 360NestedPublicSpecifies that the class is nested with public visibility.
Supported by Silverlight for Windows PhoneSupported by Xbox 360NestedPrivateSpecifies that the class is nested with private visibility.
Supported by Silverlight for Windows PhoneSupported by Xbox 360NestedFamilySpecifies that the class is nested with family visibility, and is thus accessible only by methods within its own type and any subtypes.
Supported by Silverlight for Windows PhoneSupported by Xbox 360NestedAssemblySpecifies that the class is nested with assembly visibility, and is thus accessible only by methods within its assembly.
Supported by Silverlight for Windows PhoneSupported by Xbox 360NestedFamANDAssemSpecifies that the class is nested with assembly and family visibility, and is thus accessible only by methods lying in the intersection of its family and assembly.
Supported by Silverlight for Windows PhoneSupported by Xbox 360NestedFamORAssemSpecifies that the class is nested with family or assembly visibility, and is thus accessible only by methods lying in the union of its family and assembly.
Supported by Silverlight for Windows PhoneSupported by Xbox 360LayoutMaskSpecifies class layout information.
Supported by Silverlight for Windows PhoneSupported by Xbox 360AutoLayoutSpecifies that class fields are automatically laid out by the common language runtime.
Supported by Silverlight for Windows PhoneSupported by Xbox 360SequentialLayoutSpecifies that class fields are laid out sequentially, in the order that the fields were emitted to the metadata.
Supported by Silverlight for Windows PhoneSupported by Xbox 360ExplicitLayoutSpecifies that class fields are laid out at the specified offsets.
Supported by Silverlight for Windows PhoneSupported by Xbox 360ClassSemanticsMaskSpecifies class semantics information; the current class is contextful (else agile).
Supported by Silverlight for Windows PhoneSupported by Xbox 360ClassSpecifies that the type is a class.
Supported by Silverlight for Windows PhoneSupported by Xbox 360InterfaceSpecifies that the type is an interface.
Supported by Silverlight for Windows PhoneSupported by Xbox 360AbstractSpecifies that the type is abstract.
Supported by Silverlight for Windows PhoneSupported by Xbox 360SealedSpecifies that the class is concrete and cannot be extended.
Supported by Silverlight for Windows PhoneSupported by Xbox 360SpecialNameSpecifies that the class is special in a way denoted by the name.
Supported by Silverlight for Windows PhoneSupported by Xbox 360ImportSpecifies that the class or interface is imported from another module.
Supported by Silverlight for Windows PhoneSupported by Xbox 360SerializableSpecifies that the class can be serialized.
Supported by Silverlight for Windows PhoneSupported by Xbox 360StringFormatMaskUsed to retrieve string information for native interoperability.
Supported by Silverlight for Windows PhoneSupported by Xbox 360AnsiClassLPTSTR is interpreted as ANSI.
Supported by Silverlight for Windows PhoneSupported by Xbox 360UnicodeClassLPTSTR is interpreted as UNICODE.
Supported by Silverlight for Windows PhoneSupported by Xbox 360AutoClassLPTSTR is interpreted automatically.
CustomFormatClassLPSTR is interpreted by some implementation-specific means, which includes the possibility of throwing a NotSupportedException. Not used in the Microsoft implementation of the .NET Framework.
CustomFormatMaskUsed to retrieve non-standard encoding information for native interop. The meaning of the values of these 2 bits is unspecified. Not used in the Microsoft implementation of the .NET Framework.
Supported by Silverlight for Windows PhoneSupported by Xbox 360BeforeFieldInitSpecifies that calling static methods of the type does not force the system to initialize the type.
Supported by Silverlight for Windows PhoneSupported by Xbox 360ReservedMaskAttributes reserved for runtime use.
Supported by Silverlight for Windows PhoneSupported by Xbox 360RTSpecialNameRuntime should check name encoding.
Supported by Silverlight for Windows PhoneSupported by Xbox 360HasSecurityType has security associate with it.

The members of this enumerator class match the CorTypeAttr enumerator as defined in the corhdr.h file.

The following example shows the use of type attributes. 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 Type.IsClass, Type.IsAutoLayout, and Type.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


Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Community Additions

ADD
Show: