TypeAttributes Enum

Definitie

Hiermee geeft u typekenmerken.

Deze opsomming ondersteunt een bitsgewijze combinatie van de waarden van de leden.

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
Overname
TypeAttributes
Kenmerken

Velden

Name Waarde Description
AnsiClass 0

LPTSTR wordt geïnterpreteerd als ANSI.

AutoLayout 0

Hiermee geeft u op dat klassevelden automatisch worden ingedeeld door de algemene taalruntime.

Class 0

Hiermee geeft u op dat het type een klasse is.

NotPublic 0

Hiermee geeft u op dat de klasse niet openbaar is.

Public 1

Hiermee geeft u op dat de klasse openbaar is.

NestedPublic 2

Hiermee geeft u op dat de klasse is genest met openbare zichtbaarheid.

NestedPrivate 3

Hiermee geeft u op dat de klasse is genest met persoonlijke zichtbaarheid.

NestedFamily 4

Hiermee geeft u op dat de klasse is genest met zichtbaarheid van de familie en dus alleen toegankelijk is via methoden binnen een eigen type en eventuele afgeleide typen.

NestedAssembly 5

Hiermee geeft u op dat de klasse is genest met de zichtbaarheid van de assembly en dus alleen toegankelijk is via methoden binnen de assembly.

NestedFamANDAssem 6

Hiermee geeft u op dat de klasse is genest met de zichtbaarheid van assembly en familie, en dus alleen toegankelijk is door methoden die op het snijpunt van de familie en assembly staan.

NestedFamORAssem 7

Hiermee geeft u op dat de klasse is genest met zichtbaarheid van familie of assembly en dus alleen toegankelijk is door methoden die in de samenvoeging van de familie en assembly staan.

VisibilityMask 7

Hiermee geeft u de zichtbaarheidsgegevens van het type op.

SequentialLayout 8

Hiermee geeft u op dat klassevelden opeenvolgend worden ingedeeld, in de volgorde waarin de velden zijn verzonden naar de metagegevens.

ExplicitLayout 16

Hiermee geeft u op dat klassevelden worden ingedeeld op de opgegeven offsets.

LayoutMask 24

Hiermee geeft u informatie over de indeling van de klasse op.

ClassSemanticsMask 32

Hiermee geeft u klasse semantiek informatie; de huidige klasse is contextvol (anders agile).

Interface 32

Hiermee geeft u op dat het type een interface is.

Abstract 128

Hiermee geeft u op dat het type abstract is.

Sealed 256

Hiermee geeft u op dat de klasse concreet is en niet kan worden uitgebreid.

SpecialName 1024

Hiermee geeft u op dat de klasse speciaal is op een manier die wordt aangeduid met de naam.

RTSpecialName 2048

Runtime moet de naamcodering controleren.

Import 4096

Hiermee geeft u op dat de klasse of interface wordt geïmporteerd uit een andere module.

Serializable 8192

Hiermee geeft u op dat de klasse kan worden geserialiseerd.

WindowsRuntime 16384

Hiermee geeft u een Windows Runtime type.

UnicodeClass 65536

LPTSTR wordt geïnterpreteerd als UNICODE.

AutoClass 131072

LPTSTR wordt automatisch geïnterpreteerd.

CustomFormatClass 196608

LPSTR wordt geïnterpreteerd door een aantal implementatiespecifieke middelen, waaronder de mogelijkheid om een NotSupportedException. Niet gebruikt in de Microsoft implementatie van het .NET Framework.

StringFormatMask 196608

Wordt gebruikt voor het ophalen van tekenreeksinformatie voor systeemeigen interoperabiliteit.

HasSecurity 262144

Het type heeft een beveiligingsverbinding.

ReservedMask 264192

Kenmerken die zijn gereserveerd voor runtimegebruik.

BeforeFieldInit 1048576

Hiermee geeft u op dat het aanroepen van statische methoden van het type het systeem niet dwingt om het type te initialiseren.

CustomFormatMask 12582912

Wordt gebruikt voor het ophalen van niet-standaard coderingsgegevens voor systeemeigen interoperabiliteit. De betekenis van de waarden van deze 2 bits is niet opgegeven. Niet gebruikt in de Microsoft implementatie van het .NET Framework.

Voorbeelden

In het volgende voorbeeld wordt de waarde van de Attributes eigenschap opgehaald voor Type objecten die een aantal verschillende typen vertegenwoordigen en wordt vervolgens bepaald of afzonderlijke kenmerkvlagmen zijn ingesteld.

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

Opmerkingen

Sommige van de leden van de TypeAttributes opsomming zijn maskers die een set wederzijds exclusieve kenmerken vertegenwoordigen. Het lid bevat bijvoorbeeld VisibilityMask de NotPublicleden , , Public, NestedPublic, NestedPrivateNestedFamily, NestedAssemblyen NestedFamANDAssemNestedFamORAssem leden. Omdat elke kenmerkenset een lid bevat waarvan de onderliggende waarde nul is, moet u eerst And de waarde van het masker met de specifieke System.Reflection.TypeAttributes waarde die is opgehaald uit een eigenschap, zoals Type.Attributes. De volgende tabel bevat de maskers en de afzonderlijke leden die ze bevatten:

Masker Bevat
VisibilityMask NotPublic
Openbare
NestedPublic
NestedPrivate
NestedFamily
NestedAssembly
NestedFamANDAssem
NestedFamORAssem
LayoutMask Autoindeling
Sequentiëlelayout
ExplicitLayout
ClassSemanticsMask Klasse
Interface
StringFormatMask AnsiClass
UnicodeClass
Autoclass
CustomFormatClass
CustomFormatMask Geen leden.

De leden van deze enumerator-klasse komen overeen met de CorTypeAttr-enumerator zoals gedefinieerd in het bestand corhdr.h.

Van toepassing op