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]
[ComVisibleAttribute(true)]
[FlagsAttribute]
public enum TypeAttributes

Member nameDescription
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsAbstractSpecifies that the type is abstract.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsAnsiClassLPTSTR is interpreted as ANSI.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsAutoClassLPTSTR is interpreted automatically.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsAutoLayoutSpecifies that class fields are automatically laid out by the common language runtime.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsBeforeFieldInitSpecifies that calling static methods of the type does not force the system to initialize the type.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsClassSpecifies that the type is a class.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsClassSemanticsMaskSpecifies class semantics information; the current class is contextful (else agile).
Supported by Portable Class LibrarySupported in .NET for Windows Store appsCustomFormatClassLPSTR 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.
Supported by Portable Class LibrarySupported in .NET for Windows Store appsCustomFormatMaskUsed 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 the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsExplicitLayoutSpecifies that class fields are laid out at the specified offsets.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsHasSecurityType has security associate with it.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsImportSpecifies that the class or interface is imported from another module.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsInterfaceSpecifies that the type is an interface.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsLayoutMaskSpecifies class layout information.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsNestedAssemblySpecifies that the class is nested with assembly visibility, and is thus accessible only by methods within its assembly.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsNestedFamANDAssemSpecifies 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 the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsNestedFamilySpecifies that the class is nested with family visibility, and is thus accessible only by methods within its own type and any derived types.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsNestedFamORAssemSpecifies 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 the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsNestedPrivateSpecifies that the class is nested with private visibility.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsNestedPublicSpecifies that the class is nested with public visibility.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsNotPublicSpecifies that the class is not public.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsPublicSpecifies that the class is public.
Supported by the XNA FrameworkReservedMaskAttributes reserved for runtime use.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsRTSpecialNameRuntime should check name encoding.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsSealedSpecifies that the class is concrete and cannot be extended.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsSequentialLayoutSpecifies that class fields are laid out sequentially, in the order that the fields were emitted to the metadata.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsSerializableSpecifies that the class can be serialized.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsSpecialNameSpecifies that the class is special in a way denoted by the name.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsStringFormatMaskUsed to retrieve string information for native interoperability.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsUnicodeClassLPTSTR is interpreted as UNICODE.
Supported by the XNA FrameworkSupported by Portable Class LibrarySupported in .NET for Windows Store appsVisibilityMaskSpecifies type visibility information.
Supported in .NET for Windows Store appsWindowsRuntimeSpecifies 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.

using System;
using System.Reflection;

internal struct S
{
    public int X;
}

public abstract class Example
{
    protected sealed class NestedClass {}

    public interface INested {}

    public static void Main()
    {
        // Create an array of types.
        Type[] types = { typeof(Example), typeof(NestedClass),
                         typeof(INested), typeof(S) };

        foreach (var t in types) {
           Console.WriteLine("Attributes for type {0}:", t.Name);

           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:
                   Console.WriteLine("   ...is not public");
                   break;
               case TypeAttributes.Public:
                   Console.WriteLine("   ...is public");
                   break;
               case TypeAttributes.NestedPublic:
                   Console.WriteLine("   ...is nested and public");
                   break;
               case TypeAttributes.NestedPrivate:
                   Console.WriteLine("   ...is nested and private");
                   break;
               case TypeAttributes.NestedFamANDAssem:
                   Console.WriteLine("   ...is nested, and inheritable only within the assembly" +
                      "\n         (cannot be declared in C#)");
                   break;
               case TypeAttributes.NestedAssembly:
                   Console.WriteLine("   ...is nested and internal");
                   break;
               case TypeAttributes.NestedFamily:
                   Console.WriteLine("   ...is nested and protected");
                   break;
               case TypeAttributes.NestedFamORAssem:
                   Console.WriteLine("   ...is nested and protected internal");
                   break;
           }

           ' Use the layout mask to test for layout attributes.
           TypeAttributes layout = attr & TypeAttributes.LayoutMask;
           switch (layout)
           {
               case TypeAttributes.AutoLayout:
                   Console.WriteLine("   ...is AutoLayout");
                   break;
               case TypeAttributes.SequentialLayout:
                   Console.WriteLine("   ...is SequentialLayout");
                   break;
               case TypeAttributes.ExplicitLayout:
                   Console.WriteLine("   ...is ExplicitLayout");
                   break;
           }

           ' Use the class semantics mask to test for class semantics attributes.
           TypeAttributes classSemantics = attr & TypeAttributes.ClassSemanticsMask;
           switch (classSemantics)
           {
               case TypeAttributes.Class:
                   if (t.IsValueType)
                   {
                       Console.WriteLine("   ...is a value type");
                   }
                   else
                   {
                       Console.WriteLine("   ...is a class");
                   }
                   break;
               case TypeAttributes.Interface:
                   Console.WriteLine("   ...is an interface");
                   break;
           }

           if (0!=(attr & TypeAttributes.Abstract))
           {
               Console.WriteLine("   ...is abstract");
           }

           if (0!=(attr & TypeAttributes.Sealed))
           {
               Console.WriteLine("   ...is sealed");
           }
           Console.WriteLine();
       }
    }
}
// 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

.NET Framework

Supported in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone Silverlight 8.1, Windows Phone Silverlight 8

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft