Share via

Facebook x.com LinkedIn Email

TypeAttributes Enumeration

Microsoft Silverlight will reach end of support after October 2021. Learn more.

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)

Syntax

'Declaration
<FlagsAttribute> _
<ComVisibleAttribute(True)> _
Public Enumeration TypeAttributes
[FlagsAttribute]
[ComVisibleAttribute(true)]
public enum TypeAttributes

Members

Member name Description
Supported by Silverlight for Windows PhoneSupported by Xbox 360 VisibilityMask Specifies type visibility information.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 NotPublic Specifies that the class is not public.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 Public Specifies that the class is public.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 NestedPublic Specifies that the class is nested with public visibility.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 NestedPrivate Specifies that the class is nested with private visibility.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 NestedFamily Specifies 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 360 NestedAssembly Specifies 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 360 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.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 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.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 LayoutMask Specifies class layout information.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 AutoLayout Specifies that class fields are automatically laid out by the common language runtime.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 SequentialLayout Specifies 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 360 ExplicitLayout Specifies that class fields are laid out at the specified offsets.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 ClassSemanticsMask Specifies class semantics information; the current class is contextful (else agile).
Supported by Silverlight for Windows PhoneSupported by Xbox 360 Class Specifies that the type is a class.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 Interface Specifies that the type is an interface.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 Abstract Specifies that the type is abstract.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 Sealed Specifies that the class is concrete and cannot be extended.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 SpecialName Specifies that the class is special in a way denoted by the name.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 Import Specifies that the class or interface is imported from another module.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 Serializable Specifies that the class can be serialized.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 StringFormatMask Used to retrieve string information for native interoperability.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 AnsiClass LPTSTR is interpreted as ANSI.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 UnicodeClass LPTSTR is interpreted as UNICODE.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 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.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 BeforeFieldInit Specifies that calling static methods of the type does not force the system to initialize the type.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 ReservedMask Attributes reserved for runtime use.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 RTSpecialName Runtime should check name encoding.
Supported by Silverlight for Windows PhoneSupported by Xbox 360 HasSecurity Type has security associate with it.

Remarks

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

Examples

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
using System;
using System.Reflection;
internal struct S
{
 public int X;
}
public abstract class Example
{
 protected sealed class NestedClass {}
 public interface INested {}
 private static System.Windows.Controls.TextBlock outputBlock;
 public static void Demo(System.Windows.Controls.TextBlock outputBlock)
 {
 Example.outputBlock = outputBlock;
 DisplayAttributes(typeof(Example));
 DisplayAttributes(typeof(NestedClass));
 DisplayAttributes(typeof(INested));
 DisplayAttributes(typeof(S));
 }
 private static void DisplayAttributes(Type t)
 {
 outputBlock.Text += "Attributes for type "+t.Name+":\n";
 TypeAttributes attr = t.Attributes;
 // To test for visibility attributes, you must use the visibility
 // mask.
 TypeAttributes visibility = attr & TypeAttributes.VisibilityMask;
 switch (visibility)
 {
 case TypeAttributes.NotPublic:
 outputBlock.Text += " ...is not public\n";
 break;
 case TypeAttributes.Public:
 outputBlock.Text += " ...is public\n";
 break;
 case TypeAttributes.NestedPublic:
 outputBlock.Text += " ...is nested and public\n";
 break;
 case TypeAttributes.NestedPrivate:
 outputBlock.Text += " ...is nested and private\n";
 break;
 case TypeAttributes.NestedFamANDAssem:
 outputBlock.Text += " ...is nested, and inheritable only within the assembly" +
 "\n (cannot be declared in C#)\n";
 break;
 case TypeAttributes.NestedAssembly:
 outputBlock.Text += " ...is nested and internal\n";
 break;
 case TypeAttributes.NestedFamily:
 outputBlock.Text += " ...is nested and protected\n";
 break;
 case TypeAttributes.NestedFamORAssem:
 outputBlock.Text += " ...is nested and protected internal\n";
 break;
 }
 TypeAttributes layout = attr & TypeAttributes.LayoutMask;
 switch (layout)
 {
 case TypeAttributes.AutoLayout:
 outputBlock.Text += " ...is AutoLayout\n";
 break;
 case TypeAttributes.SequentialLayout:
 outputBlock.Text += " ...is SequentialLayout\n";
 break;
 case TypeAttributes.ExplicitLayout:
 outputBlock.Text += " ...is ExplicitLayout\n";
 break;
 }
 TypeAttributes classSemantics = attr & TypeAttributes.ClassSemanticsMask;
 switch (classSemantics)
 {
 case TypeAttributes.Class:
 if (t.IsValueType)
 {
 outputBlock.Text += " ...is a value type\n";
 }
 else
 {
 outputBlock.Text += " ...is a class\n";
 }
 break;
 case TypeAttributes.Interface:
 outputBlock.Text += " ...is an interface\n";
 break;
 }
 if (0!=(attr & TypeAttributes.Abstract)) 
 {
 outputBlock.Text += " ...is abstract\n";
 }
 if (0!=(attr & TypeAttributes.Sealed)) 
 {
 outputBlock.Text += " ...is sealed\n";
 }
 }
}
/* This example produces the following output:
Attributes for type Example:
 ...is public
 ...is AutoLayout
 ...is a class
 ...is abstract
Attributes for type NestedClass:
 ...is nested and protected
 ...is AutoLayout
 ...is a class
 ...is sealed
Attributes for type INested:
 ...is nested and public
 ...is AutoLayout
 ...is an interface
 ...is abstract
Attributes for type S:
 ...is not public
 ...is SequentialLayout
 ...is a value type
 ...is sealed
 */

Version Information

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

Platforms

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


  • Last updated on 2011年11月17日