TypeAttributes Enumeráció

Definíció

Típusattribútumokat ad meg.

Ez a felsorolás támogatja a tagértékek bitenkénti kombinációját.

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
Öröklődés
TypeAttributes
Attribútumok

Mezők

Name Érték Description
AnsiClass 0

Az LPTSTR ANSI-ként van értelmezve.

AutoLayout 0

Megadja, hogy az osztálymezőket a közös nyelvi futtatókörnyezet automatikusan lefekteti.

Class 0

Azt adja meg, hogy a típus egy osztály.

NotPublic 0

Azt adja meg, hogy az osztály nem nyilvános.

Public 1

Megadja, hogy az osztály nyilvános-e.

NestedPublic 2

Megadja, hogy az osztály a nyilvános láthatósággal van-e beágyazva.

NestedPrivate 3

Megadja, hogy az osztály privát láthatósággal van-e beágyazva.

NestedFamily 4

Megadja, hogy az osztály családi láthatósággal van beágyazva, és így csak a saját és a származtatott típuson belüli metódusokkal érhető el.

NestedAssembly 5

Azt határozza meg, hogy az osztály szerelvény láthatóságával van beágyazva, és így csak a szerelvényen belüli metódusokkal érhető el.

NestedFamANDAssem 6

Meghatározza, hogy az osztály szerelvény és család láthatóságával van beágyazva, és így csak a család és a szerelvény metszetében található módszerekkel érhető el.

NestedFamORAssem 7

Megadja, hogy az osztály a család vagy a szerelvény láthatóságával van beágyazva, és így csak a család és a szerelvény egyesítésében található módszerekkel érhető el.

VisibilityMask 7

Típus láthatósági adatait adja meg.

SequentialLayout 8

Megadja, hogy az osztálymezők egymás után legyenek elhelyezve, abban a sorrendben, hogy a mezők ki lettek bocsátva a metaadatoknak.

ExplicitLayout 16

Megadja, hogy az osztálymezők a megadott eltolásokon legyenek elhelyezve.

ExtendedLayout 24
LayoutMask 24

Osztályelrendezési információkat ad meg.

ClassSemanticsMask 32

Osztályszemantikai információkat ad meg; az aktuális osztály környezetfüggő (máskülönben agilis).

Interface 32

Megadja, hogy a típus egy felület.

Abstract 128

Azt adja meg, hogy a típus absztrakt.

Sealed 256

Megadja, hogy az osztály konkrét, és nem bővíthető.

SpecialName 1024

Megadja, hogy az osztály a név által meghatározott módon különleges legyen.

RTSpecialName 2048

A futtatókörnyezetnek ellenőriznie kell a névkódolást.

Import 4096

Azt adja meg, hogy az osztály vagy a felület egy másik modulból legyen importálva.

Serializable 8192

Megadja, hogy az osztály szerializálható-e.

WindowsRuntime 16384

Egy Windows-futtatókörnyezet típust ad meg.

UnicodeClass 65536

Az LPTSTR UNICODE-ként van értelmezve.

AutoClass 131072

A rendszer automatikusan értelmezi az LPTSTR-t.

CustomFormatClass 196608

Az LPSTR-t valamilyen implementációspecifikus eszköz értelmezi, amely magában foglalja a dobás NotSupportedExceptionlehetőségét. A .NET-keretrendszer Microsoft implementációjában nem használatos.

StringFormatMask 196608

Sztringinformációk lekérésére szolgál a natív együttműködéshez.

HasSecurity 262144

A típushoz biztonsági társítás tartozik.

ReservedMask 264192

Futásidejű használatra fenntartott attribútumok.

BeforeFieldInit 1048576

Megadja, hogy a típus statikus metódusainak meghívása nem kényszeríti a rendszert a típus inicializálására.

CustomFormatMask 12582912

A natív interop nem szabványos kódolási információinak lekérésére szolgál. A két bit értékeinek jelentése meghatározatlan. A .NET-keretrendszer Microsoft implementációjában nem használatos.

Példák

Az alábbi példa beolvassa a tulajdonság értékét olyan Attributes objektumokhoz Type , amelyek több különböző típust képviselnek, majd meghatározza, hogy az egyes attribútumjelölők be lettek-e állítva.

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

Megjegyzések

Az enumerálás egyes tagjai TypeAttributes olyan maszkok, amelyek kölcsönösen kizáró attribútumok halmazát képviselik. A tag például a VisibilityMask , NotPublic, Public, , NestedPublicNestedPrivate, NestedFamily, NestedAssemblyés NestedFamANDAssem tagokat tartalmazzaNestedFamORAssem. Mivel minden attribútumkészlet tartalmaz egy olyan tagot, amelynek mögöttes értéke nulla, először And a maszk értékét kell megadnia egy System.Reflection.TypeAttributes tulajdonságból, például Type.Attributes. Az alábbi táblázat a maszkokat és az egyes tagokat sorolja fel:

Mask Tartalmazza
Láthatósági maszk NotPublic
Nyilvános
NestedPublic
Beágyazottprivate
NestedFamily
NestedAssembly
NestedFamANDAssem
NestedFamORAssem
LayoutMask Automatikus átfedés
SequentialLayout
ExplicitLayout
ClassSemanticsMask Osztály
Interface
StringFormatMask AnsiClass
UnicodeClass
Automatikus besorolás
CustomFormatClass
CustomFormatMask Nincsenek tagok.

Az enumerátorosztály tagjai megfelelnek a corhdr.h fájlban meghatározott CorTypeAttr enumerátornak.

A következőre érvényes: