Freigeben über


TypeAttributes Enumeration

Definition

Gibt Typattribute an.

Diese Enumeration unterstützt eine bitweise Kombination ihrer Memberwerte.

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
Vererbung
TypeAttributes
Attribute

Felder

Abstract 128

Gibt an, dass der Typ abstrakt ist.

AnsiClass 0

LPTSTR wird als ANSI-Code interpretiert.

AutoClass 131072

LPTSTR wird automatisch interpretiert.

AutoLayout 0

Gibt an, dass das Layout der Klassenfelder automatisch durch die Common Language Runtime erfolgt.

BeforeFieldInit 1048576

Gibt an, dass durch den Aufruf von statischen Methoden des Typs nicht die Initialisierung dieses Typs durch das System erzwungen wird.

Class 0

Gibt an, dass der Typ eine Klasse ist.

ClassSemanticsMask 32

Gibt Informationen zur Klassensemantik an. Die aktuelle Klasse ist kontextabhängig (andernfalls beweglich).

CustomFormatClass 196608

LPSTR wird mit einigen implementierungsabhängigen Mitteln interpretiert. Dazu zählt auch die Möglichkeit, eine NotSupportedException auszulösen. Wird nicht in der Microsoft Implementierung des .NET Framework verwendet.

CustomFormatMask 12582912

Wird verwendet, um nicht standardkonforme Codierungsinformationen für systemeigenes Interop abzurufen. Die Bedeutung der Werte dieser 2 Bits ist nicht festgelegt. Wird nicht in der Microsoft Implementierung des .NET Framework verwendet.

ExplicitLayout 16

Gibt an, dass das Layout der Klassenfelder an den angegebenen Offsets erfolgt.

HasSecurity 262144

Dem Typ ist Sicherheit zugeordnet.

Import 4096

Gibt an, dass die Klasse oder die Schnittstelle aus einem anderen Modul importiert wird.

Interface 32

Gibt an, dass der Typ eine Schnittstelle ist.

LayoutMask 24

Gibt Informationen zum Klassenlayout an.

NestedAssembly 5

Gibt an, dass die Klasse mit Assemblysichtbarkeit geschachtelt ist, und dass daher nur mit Methoden auf die Klasse zugegriffen werden kann, die sich in ihrer Assembly befinden.

NestedFamANDAssem 6

Gibt an, dass die Klasse mit Assembly- und Familiensichtbarkeit geschachtelt ist und daher nur mit Methoden auf die Klasse zugegriffen werden kann, die zur Schnittmenge ihrer Familie und Assembly gehören.

NestedFamily 4

Gibt an, dass die Klasse mit Familiensichtbarkeit geschachtelt ist und daher nur mit Methoden auf die Klasse zugegriffen werden kann, die sich innerhalb des Typs oder eines beliebigen abgeleiteten Typs befinden.

NestedFamORAssem 7

Gibt an, dass die Klasse mit Assembly- oder Familiensichtbarkeit geschachtelt ist und daher nur mit Methoden auf die Klasse zugegriffen werden kann, die zur Gesamtmenge ihrer Familie und Assembly gehören.

NestedPrivate 3

Gibt an, dass die Klasse mit privater Sichtbarkeit geschachtelt ist.

NestedPublic 2

Gibt an, dass die Klasse mit öffentlicher Sichtbarkeit geschachtelt ist.

NotPublic 0

Gibt an, dass die Klasse nicht öffentlich ist.

Public 1

Gibt an, dass die Klasse öffentlich ist.

ReservedMask 264192

Attribute, die für die Verwendung zur Laufzeit reserviert sind.

RTSpecialName 2048

Die Laufzeit muss die Namenscodierung überprüfen.

Sealed 256

Gibt an, dass die Klasse konkret ist und nicht erweitert werden kann.

SequentialLayout 8

Gibt an, dass das Layout der Klassenfelder sequenziell in der Reihenfolge erfolgt, in der die Felder an die Metadaten ausgegeben wurden.

Serializable 8192

Gibt an, dass die Klasse serialisiert werden kann.

SpecialName 1024

Gibt an, dass der Name eine Besonderheit der Klasse bezeichnet.

StringFormatMask 196608

Wird zum Abrufen von Zeichenfolgeninformationen für die systemeigene Interoperabilität verwendet.

UnicodeClass 65536

LPTSTR wird als UNICODE interpretiert.

VisibilityMask 7

Gibt Informationen zur Sichtbarkeit des Typs an.

WindowsRuntime 16384

Gibt einen Windows-Runtime-Typ an.

Beispiele

Im folgenden Beispiel wird der Wert der Attributes -Eigenschaft für Type Objekte abgerufen, die eine Reihe verschiedener Typen darstellen, und anschließend bestimmt, ob einzelne Attributflags festgelegt wurden.

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

Hinweise

Einige der Member der TypeAttributes Enumeration sind Masken, die eine Reihe von sich gegenseitig ausschließenden Attributen darstellen. Das Element enthält beispielsweise VisibilityMask die NotPublic- , Public- NestedPublic, - NestedPrivate, NestedFamily- NestedAssemblyNestedFamANDAssemund NestedFamORAssem -Member. Da jeder Attributsatz ein Element enthält, dessen zugrunde liegender Wert 0 ist, sollten Sie zuerst And den Wert der Maske mit dem spezifischen System.Reflection.TypeAttributes Wert aus einer Eigenschaft wie Type.Attributesabrufen. In der folgenden Tabelle sind die Masken und die einzelnen Elemente aufgeführt, die sie enthalten:

Mask Includes
VisibilityMask NotPublic
Öffentlich
NestedPublic
NestedPrivate
Geschachtelte Familie
NestedAssembly
NestedFamANDAssem
NestedFamORAssem
LayoutMask Autolayout
SequentialLayout
ExplicitLayout
ClassSemanticsMask Klasse
Schnittstelle
StringFormatMask AnsiClass
UnicodeClass
AutoClass
CustomFormatClass
CustomFormatMask Keine Member.

Die Member dieser Enumeratorklasse entsprechen dem CorTypeAttr-Enumerator, der in der Datei "corhdr.h" definiert ist.

Gilt für: