TypeAttributes Enum
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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
- 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.