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)
| Member name | Description | |
|---|---|---|
![]() ![]() | VisibilityMask | Specifies type visibility information. |
![]() ![]() | NotPublic | Specifies that the class is not public. |
![]() ![]() | Public | Specifies that the class is public. |
![]() ![]() | NestedPublic | Specifies that the class is nested with public visibility. |
![]() ![]() | NestedPrivate | Specifies that the class is nested with private visibility. |
![]() ![]() | NestedFamily | Specifies that the class is nested with family visibility, and is thus accessible only by methods within its own type and any subtypes. |
![]() ![]() | 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. |
![]() ![]() | 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. |
![]() ![]() | LayoutMask | Specifies class layout information. |
![]() ![]() | AutoLayout | Specifies that class fields are automatically laid out by the common language runtime. |
![]() ![]() | SequentialLayout | Specifies that class fields are laid out sequentially, in the order that the fields were emitted to the metadata. |
![]() ![]() | ExplicitLayout | Specifies that class fields are laid out at the specified offsets. |
![]() ![]() | ClassSemanticsMask | Specifies class semantics information; the current class is contextful (else agile). |
![]() ![]() | Class | Specifies that the type is a class. |
![]() ![]() | Interface | Specifies that the type is an interface. |
![]() ![]() | Abstract | Specifies that the type is abstract. |
![]() ![]() | Sealed | Specifies that the class is concrete and cannot be extended. |
![]() ![]() | SpecialName | Specifies that the class is special in a way denoted by the name. |
![]() ![]() | Import | Specifies that the class or interface is imported from another module. |
![]() ![]() | Serializable | Specifies that the class can be serialized. |
![]() ![]() | StringFormatMask | Used to retrieve string information for native interoperability. |
![]() ![]() | AnsiClass | LPTSTR is interpreted as ANSI. |
![]() ![]() | UnicodeClass | LPTSTR is interpreted as UNICODE. |
![]() ![]() | AutoClass | LPTSTR is interpreted automatically. |
| 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. | |
![]() ![]() | BeforeFieldInit | Specifies that calling static methods of the type does not force the system to initialize the type. |
![]() ![]() | ReservedMask | Attributes reserved for runtime use. |
![]() ![]() | RTSpecialName | Runtime should check name encoding. |
![]() ![]() | HasSecurity | Type has security associate with it. |
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.
Note: |
|---|
To run this example, see Building Examples That Use a Demo Method and a TextBlock Control. |
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
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.


Note: