Windows apps
Collapse the table of content
Expand the table of content
Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

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)

<SerializableAttribute>
<FlagsAttribute>
<ComVisibleAttribute(True)>
Public Enumeration TypeAttributes

Member nameDescription
Abstract

Specifies that the type is abstract.

AnsiClass

LPTSTR is interpreted as ANSI.

AutoClass

LPTSTR is interpreted automatically.

AutoLayout

Specifies that class fields are automatically laid out by the common language runtime.

BeforeFieldInit

Specifies that calling static methods of the type does not force the system to initialize the type.

Class

Specifies that the type is a class.

ClassSemanticsMask

Specifies class semantics information; the current class is contextful (else agile).

CustomFormatClass

LPSTR 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.

CustomFormatMask

Used 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.

ExplicitLayout

Specifies that class fields are laid out at the specified offsets.

HasSecurity

Type has security associate with it.

Import

Specifies that the class or interface is imported from another module.

Interface

Specifies that the type is an interface.

LayoutMask

Specifies class layout information.

NestedAssembly

Specifies that the class is nested with assembly visibility, and is thus accessible only by methods within its assembly.

NestedFamANDAssem

Specifies 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.

NestedFamily

Specifies that the class is nested with family visibility, and is thus accessible only by methods within its own type and any derived types.

NestedFamORAssem

Specifies 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.

NestedPrivate

Specifies that the class is nested with private visibility.

NestedPublic

Specifies that the class is nested with public visibility.

NotPublic

Specifies that the class is not public.

Public

Specifies that the class is public.

ReservedMask

Attributes reserved for runtime use.

RTSpecialName

Runtime should check name encoding.

Sealed

Specifies that the class is concrete and cannot be extended.

SequentialLayout

Specifies that class fields are laid out sequentially, in the order that the fields were emitted to the metadata.

Serializable

Specifies that the class can be serialized.

SpecialName

Specifies that the class is special in a way denoted by the name.

StringFormatMask

Used to retrieve string information for native interoperability.

UnicodeClass

LPTSTR is interpreted as UNICODE.

VisibilityMask

Specifies type visibility information.

WindowsRuntime

Specifies a Windows Runtime type.

Some of the members of the TypeAttributes enumeration are masks that represent a set of mutually exclusive attributes. For example, the TypeAttributes.VisibilityMask member includes the TypeAttributes.NotPublic, TypeAttributes.Public, TypeAttributes.NestedPublic, TypeAttributes.NestedPrivate, TypeAttributes.NestedFamily, TypeAttributes.NestedAssembly, TypeAttributes.NestedFamANDAssem, and TypeAttributes.NestedFamORAssem members, Because each attribute set includes a member whose underlying value is zero, you should first And the value of the mask with the specific TypeAttributes value retrieved from a property such as Type.Attributes. The following table lists the masks and the individual members that they include:

Mask

Includes

VisibilityMask

NotPublic
Public
NestedPublic
NestedPrivate
NestedFamily
NestedAssembly
NestedFamANDAssem
NestedFamORAssem

LayoutMask

AutoLayout
SequentialLayout
ExplicitLayout

ClassSemanticsMask

Class
Interface

StringFormatMask

AnsiClass
UnicodeClass
AutoClass
CustomFormatClass

CustomFormatMask

No members.

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

The following example retrieves the value of the Attributes property for Type objects that represent a number of different types, and then determines whether individual attribute flags have been set.

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

    Public Shared Sub Main()
        ' Create an array of types.
        Dim types() As Type = { GetType(Example), GetType(NestedClass),
                                GetType(INested), GetType(S) }

        For Each t In types
           Console.WriteLine("Attributes for type {0}:", t.Name)

           Dim attr As TypeAttributes = t.Attributes

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

           ' Use the layout mask to test for layout attributes.
           Dim layout As TypeAttributes = attr And TypeAttributes.LayoutMask
           Select Case layout
               Case TypeAttributes.AutoLayout:
                   Console.WriteLine("   ...is AutoLayout")
               Case TypeAttributes.SequentialLayout:
                   Console.WriteLine("   ...is SequentialLayout")
               Case TypeAttributes.ExplicitLayout:
                   Console.WriteLine("   ...is ExplicitLayout")
           End Select

           ' Use the class semantics mask to test for class semantics attributes.
           Dim classSemantics As TypeAttributes = attr And TypeAttributes.ClassSemanticsMask
           Select Case classSemantics
               Case TypeAttributes.Class:
                   If t.IsValueType Then
                       Console.WriteLine("   ...is a value type")
                   Else
                       Console.WriteLine("   ...is a class")
                   End If
               Case TypeAttributes.Interface:
                   Console.WriteLine("   ...is an interface")
           End Select

           If 0 <> (attr And TypeAttributes.Abstract) Then _
               Console.WriteLine("   ...is MustInherit")

           If 0 <> (attr And TypeAttributes.Sealed) Then _
               Console.WriteLine("   ...is NotInheritable")
           Console.WriteLine()
       Next
    End Sub
End Class
' The example displays 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

Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top
Show:
© 2017 Microsoft