Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Propiedad Type.Attributes

 

Publicado: noviembre de 2016

Obtiene los atributos asociados al objeto Type.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

public TypeAttributes Attributes { get; }

Valor de propiedad

Type: System.Reflection.TypeAttributes

Objeto TypeAttributes que representa el conjunto de atributos del objeto Type, a menos que el objeto Type represente un parámetro de tipo genérico, en cuyo caso el valor no se especifica.

Algunos miembros de la TypeAttributes enumeración son máscaras que representan un grupo de valores. Cada grupo incluye a un miembro cuyo valor subyacente es cero. Por ejemplo, el valor subyacente de la TypeAttributes.NotPublic miembro en el TypeAttributes.VisibilityMask grupo es cero, como es el TypeAttributes.AutoLayout miembro en el TypeAttributes.SequentialLayout grupo. Por este motivo, debe usar la máscara antes de probar para esos valores. En este ejemplo se ilustra.

System_CAPS_tipSugerencia

Para la mayoría de los casos, como propiedadesIsClass,IsAutoLayout, yIsSpecialName son más fáciles de usar que los atributos de tipo.

Si la actual Type representa un tipo genérico construido, esta propiedad devuelve los atributos de la definición de tipo genérico. Por ejemplo, los atributos devueltos para MyGenericClass<int> (MyGenericClass(Of Integer) en Visual Basic) son los atributos del MyGenericClass<T> (MyGenericClass(Of T) en Visual Basic).

Si actual Type representa un parámetro de tipo genérico, es decir, si la IsGenericParameter propiedad devuelve true : el TypeAttributes valor devuelto por esta propiedad no está especificado.

El siguiente utiliza ejemplo Attributes propiedad.

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 (0!=(attr & TypeAttributes.Abstract))
           {
               Console.WriteLine("   ...is abstract");
           }

           if (0!=(attr & TypeAttributes.Sealed))
           {
               Console.WriteLine("   ...is sealed");
           }
           Console.WriteLine();
       }
    }
}
// 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

.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Volver al principio
Mostrar: