TypeAttributes TypeAttributes TypeAttributes TypeAttributes Enum

Definición

Especifica los atributos de tipo.Specifies type attributes.

Esta enumeración tiene el atributo FlagsAttribute, que permite una combinación bit a bit de sus valores de miembro.

public enum class TypeAttributes
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum TypeAttributes
type TypeAttributes = 
Public Enum TypeAttributes
Herencia
TypeAttributesTypeAttributesTypeAttributesTypeAttributes
Atributos

Campos

Abstract Abstract Abstract Abstract 128

Especifica que el tipo es abstracto.Specifies that the type is abstract.

AnsiClass AnsiClass AnsiClass AnsiClass 0

LPTSTR se interpreta como ANSI.LPTSTR is interpreted as ANSI.

AutoClass AutoClass AutoClass AutoClass 131072

LPTSTR se interpreta automáticamente.LPTSTR is interpreted automatically.

AutoLayout AutoLayout AutoLayout AutoLayout 0

Especifica que Common Language Runtime distribuye automáticamente los campos de la clase.Specifies that class fields are automatically laid out by the common language runtime.

BeforeFieldInit BeforeFieldInit BeforeFieldInit BeforeFieldInit 1048576

Especifica que la llamada a métodos estáticos del tipo no obliga al sistema a inicializar dicho tipo.Specifies that calling static methods of the type does not force the system to initialize the type.

Class Class Class Class 0

Especifica que el tipo es una clase.Specifies that the type is a class.

ClassSemanticsMask ClassSemanticsMask ClassSemanticsMask ClassSemanticsMask 32

Especifica la información semántica de la clase; la clase actual es contextual (o bien, ágil).Specifies class semantics information; the current class is contextful (else agile).

CustomFormatClass CustomFormatClass CustomFormatClass CustomFormatClass 196608

LPSTR se interpreta mediante recursos específicos de la implementación, lo que podría iniciar una excepción NotSupportedException.LPSTR is interpreted by some implementation-specific means, which includes the possibility of throwing a NotSupportedException. No se utiliza en la implementación de Microsoft de .NET Framework.NET Framework.Not used in the Microsoft implementation of the .NET Framework.NET Framework.

CustomFormatMask CustomFormatMask CustomFormatMask CustomFormatMask 12582912

Se utiliza para recuperar información de la codificación no estándar y obtener la interoperabilidad nativa.Used to retrieve non-standard encoding information for native interop. El significado de los valores de estos 2 bits no se especifica.The meaning of the values of these 2 bits is unspecified. No se utiliza en la implementación de Microsoft de .NET Framework.NET Framework.Not used in the Microsoft implementation of the .NET Framework.NET Framework.

ExplicitLayout ExplicitLayout ExplicitLayout ExplicitLayout 16

Especifica que los campos de la clase se distribuyen con los desplazamientos indicados.Specifies that class fields are laid out at the specified offsets.

HasSecurity HasSecurity HasSecurity HasSecurity 262144

Type tiene características de seguridad asociadas.Type has security associate with it.

Import Import Import Import 4096

Especifica que la clase o interfaz se importó de otro módulo.Specifies that the class or interface is imported from another module.

Interface Interface Interface Interface 32

Especifica que el tipo es una interfaz.Specifies that the type is an interface.

LayoutMask LayoutMask LayoutMask LayoutMask 24

Especifica la información de diseño de la clase.Specifies class layout information.

NestedAssembly NestedAssembly NestedAssembly NestedAssembly 5

Especifica que la clase se anida con visibilidad de ensamblado y, por lo tanto, sólo los métodos de su ensamblado tienen acceso a ella.Specifies that the class is nested with assembly visibility, and is thus accessible only by methods within its assembly.

NestedFamANDAssem NestedFamANDAssem NestedFamANDAssem NestedFamANDAssem 6

Especifica que la clase se anida con visibilidad de ensamblado y familia y, por lo tanto, sólo los métodos que están en la intersección de su familia y ensamblado tienen acceso a ella.Specifies that the class is nested with assembly and family visibility, and is thus accessible only by methods lying in the intersection of its family and assembly.

NestedFamily NestedFamily NestedFamily NestedFamily 4

Especifica que la clase se anida con visibilidad de familia y, por lo tanto, solo los métodos de su propio tipo y tipos derivados tienen acceso a ella.Specifies that the class is nested with family visibility, and is thus accessible only by methods within its own type and any derived types.

NestedFamORAssem NestedFamORAssem NestedFamORAssem NestedFamORAssem 7

Especifica que la clase se anida con visibilidad de ensamblado o familia y, por lo tanto, sólo los métodos que están en la unión de su familia y ensamblado tienen acceso a ella.Specifies that the class is nested with family or assembly visibility, and is thus accessible only by methods lying in the union of its family and assembly.

NestedPrivate NestedPrivate NestedPrivate NestedPrivate 3

Especifica que la clase se anida con visibilidad privada.Specifies that the class is nested with private visibility.

NestedPublic NestedPublic NestedPublic NestedPublic 2

Especifica que la clase se anida con visibilidad pública.Specifies that the class is nested with public visibility.

NotPublic NotPublic NotPublic NotPublic 0

Especifica que la clase no es pública.Specifies that the class is not public.

Public Public Public Public 1

Especifica que la clase es pública.Specifies that the class is public.

ReservedMask ReservedMask ReservedMask ReservedMask 264192

Atributos reservados para su uso en tiempo de ejecución.Attributes reserved for runtime use.

RTSpecialName RTSpecialName RTSpecialName RTSpecialName 2048

Common Language Runtime debe comprobar la codificación de nombres.Runtime should check name encoding.

Sealed Sealed Sealed Sealed 256

Especifica que la clase es concreta y no se puede extender.Specifies that the class is concrete and cannot be extended.

SequentialLayout SequentialLayout SequentialLayout SequentialLayout 8

Especifica que los campos de la clase se distribuyen secuencialmente, en el orden en que se emitieron a los metadatos.Specifies that class fields are laid out sequentially, in the order that the fields were emitted to the metadata.

Serializable Serializable Serializable Serializable 8192

Especifica que la clase se puede serializar.Specifies that the class can be serialized.

SpecialName SpecialName SpecialName SpecialName 1024

Especifica que la clase es especial en la forma que describe el nombre.Specifies that the class is special in a way denoted by the name.

StringFormatMask StringFormatMask StringFormatMask StringFormatMask 196608

Se utiliza para recuperar información de cadena para la interoperabilidad nativa.Used to retrieve string information for native interoperability.

UnicodeClass UnicodeClass UnicodeClass UnicodeClass 65536

LPTSTR se interpreta como UNICODE.LPTSTR is interpreted as UNICODE.

VisibilityMask VisibilityMask VisibilityMask VisibilityMask 7

Especifica la información sobre la visibilidad del tipo.Specifies type visibility information.

WindowsRuntime WindowsRuntime WindowsRuntime WindowsRuntime 16384

Especifica un tipo de Windows en tiempo de ejecuciónWindows Runtime.Specifies a Windows en tiempo de ejecuciónWindows Runtime type.

Ejemplos

En el ejemplo siguiente se recupera el valor de Attributes la propiedad Type para los objetos que representan varios tipos diferentes y, a continuación, se determina si se han establecido marcas de atributo individuales.The following example retrieves the value of the Attributes property for Type objects that represent a number of different types, and then determines whether individual attribute flags have been set.

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

Comentarios

Algunos de los miembros de la TypeAttributes enumeración son máscaras que representan un conjunto de atributos mutuamente excluyentes.Some of the members of the TypeAttributes enumeration are masks that represent a set of mutually exclusive attributes. Por ejemplo, el VisibilityMask miembro incluye los NotPublicmiembros Public, NestedPublic, NestedPrivate, NestedFamily, NestedAssembly, ,NestedFamANDAssemy .NestedFamORAssemFor example, the VisibilityMask member includes the NotPublic, Public, NestedPublic, NestedPrivate, NestedFamily, NestedAssembly, NestedFamANDAssem, and NestedFamORAssem members. Dado que cada conjunto de atributos incluye un miembro cuyo valor subyacente es cero, debe And primero el valor de la máscara con el System.Reflection.TypeAttributes valor específico recuperado Type.Attributesde una propiedad como.Because each attribute set includes a member whose underlying value is zero, you should first And the value of the mask with the specific System.Reflection.TypeAttributes value retrieved from a property such as Type.Attributes. En la tabla siguiente se enumeran las máscaras y los miembros individuales que incluyen:The following table lists the masks and the individual members that they include:

MáscaraMask IncluyeIncludes
VisibilityMaskVisibilityMask NotPublicNotPublic
PublicPublic
NestedPublicNestedPublic
NestedPrivateNestedPrivate
NestedFamilyNestedFamily
NestedAssemblyNestedAssembly
NestedFamANDAssemNestedFamANDAssem
NestedFamORAssemNestedFamORAssem
LayoutMaskLayoutMask Diseño automáticoAutoLayout
SequentialLayoutSequentialLayout
ExplicitLayoutExplicitLayout
ClassSemanticsMaskClassSemanticsMask ClaseClass
InterfazInterface
StringFormatMaskStringFormatMask AnsiClassAnsiClass
UnicodeClassUnicodeClass
AutoclaseAutoClass
CustomFormatClassCustomFormatClass
CustomFormatMaskCustomFormatMask Ningún miembro.No members.

Los miembros de esta clase de enumerador coinciden con el enumerador Cortypeattr (tal como se define en el archivo CorHdr. h.The members of this enumerator class match the CorTypeAttr enumerator as defined in the corhdr.h file.

Se aplica a