Partager via


TypeAttributes Énumération

Définition

Spécifie les attributs de type.

Cette énumération prend en charge une combinaison au niveau du bit de ses valeurs membres.

public enum class TypeAttributes
[System.Flags]
public enum TypeAttributes
[System.Flags]
[System.Serializable]
public enum TypeAttributes
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum TypeAttributes
[<System.Flags>]
type TypeAttributes = 
[<System.Flags>]
[<System.Serializable>]
type TypeAttributes = 
[<System.Flags>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type TypeAttributes = 
Public Enum TypeAttributes
Héritage
TypeAttributes
Attributs

Champs

Abstract 128

Spécifie que le type est abstrait.

AnsiClass 0

LPTSTR est interprété comme ANSI.

AutoClass 131072

LPTSTR est interprété automatiquement.

AutoLayout 0

Spécifie que le Common Language Runtime dispose automatiquement les champs de la classe.

BeforeFieldInit 1048576

Spécifie que l'appel à des méthodes statiques du type ne force pas le système à initialiser le type.

Class 0

Spécifie que le type est une classe.

ClassSemanticsMask 32

Spécifie des informations de sémantiques se rapportant à la classe ; la classe actuelle est liée au contexte (dans le cas contraire, agile).

CustomFormatClass 196608

LPSTR est interprété par des moyens spécifiques à l'implémentation, notamment la possibilité de lever NotSupportedException. Non utilisé dans l’implémentation Microsoft de l'.NET Framework.

CustomFormatMask 12582912

Utilisé pour récupérer des informations d'encodage non standard pour une interopérabilité native. La signification des valeurs de ces 2 bits n'est pas spécifiée. Non utilisé dans l’implémentation Microsoft de l'.NET Framework.

ExplicitLayout 16

Spécifie que les champs de la classe sont placés aux offsets spécifiés.

HasSecurity 262144

La sécurité est associée au type.

Import 4096

Spécifie que la classe ou l'interface est importée à partir d'un autre module.

Interface 32

Spécifie que le type est une interface.

LayoutMask 24

Spécifie des informations relatives à la disposition de la classe.

NestedAssembly 5

Spécifie que la classe est imbriquée et qu'elle a une visibilité de niveau assembly. Par conséquent, elle est uniquement accessible aux méthodes contenues dans son assembly.

NestedFamANDAssem 6

Spécifie que la classe est imbriquée et qu'elle a une visibilité de niveau assembly et family. Par conséquent, elle est uniquement accessible aux méthodes se trouvant à l'intersection entre sa famille et son assembly.

NestedFamily 4

Spécifie que la classe est imbriquée et qu'elle a une visibilité de niveau family. Par conséquent, elle est uniquement accessible aux méthodes contenues dans son propre type et dans ses types dérivés, le cas échéant.

NestedFamORAssem 7

Spécifie que la classe est imbriquée et qu'elle a une visibilité de niveau assembly ou family. Par conséquent, elle est uniquement accessible aux méthodes comprises dans l'union de sa famille et de son assembly.

NestedPrivate 3

Spécifie que la classe est imbriquée et qu'elle a une visibilité privée.

NestedPublic 2

Spécifie que la classe est imbriquée et qu'elle a une visibilité publique.

NotPublic 0

Spécifie que la classe n'est pas publique.

Public 1

Spécifie que la classe est publique.

ReservedMask 264192

Attributs réservés pour une utilisation au moment de l'exécution.

RTSpecialName 2048

Le runtime doit vérifier l'encodage des noms.

Sealed 256

Spécifie que la classe est concrète et qu'elle ne peut pas être étendue.

SequentialLayout 8

Spécifie que les champs de la classe sont placés séquentiellement, en respectant l'ordre dans lequel ils ont été émis aux métadonnées.

Serializable 8192

Spécifie que la classe peut être sérialisée.

SpecialName 1024

Spécifie qu'il s'agit d'une classe spéciale, tel qu'indiqué par son nom.

StringFormatMask 196608

Utilisé pour récupérer des informations de chaîne pour une interopérabilité native.

UnicodeClass 65536

LPTSTR est interprété comme UNICODE.

VisibilityMask 7

Spécifie des informations sur la visibilité du type.

WindowsRuntime 16384

Spécifie un type Windows Runtime.

Exemples

L’exemple suivant récupère la valeur de la Attributes propriété pour Type les objets qui représentent un certain nombre de types différents, puis détermine si des indicateurs d’attribut individuels ont été définis.

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

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

Remarques

Certains des membres de l’énumération TypeAttributes sont des masques qui représentent un ensemble d’attributs mutuellement exclusifs. Par exemple, le VisibilityMask membre inclut les NotPublicmembres , , , NestedFamily``NestedPrivate``NestedPublic``NestedAssembly``Public, , et NestedFamANDAssem``NestedFamORAssem les membres. Étant donné que chaque jeu d’attributs inclut un membre dont la valeur sous-jacente est zéro, vous devez d’abord And la valeur du masque avec la valeur spécifique System.Reflection.TypeAttributes récupérée à partir d’une propriété telle que Type.Attributes. Le tableau suivant répertorie les masques et les membres individuels qu’ils incluent :

Mask Includes
VisibilityMask NotPublic
Public
NestedPublic
NestedPrivate
NestedFamily
NestedAssembly
NestedFamANDAssem
NestedFamORAssem
LayoutMask Superposition automatique
SéquentielLayout
ExplicitLayout
ClassSemanticsMask Classe
Interface
StringFormatMask AnsiClass
UnicodeClass
Classe automatique
CustomFormatClass
CustomFormatMask Aucun membre.

Les membres de cette classe d’énumérateur correspondent à l’énumérateur CorTypeAttr tel que défini dans le fichier corhdr.h.

S’applique à