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

Método Type.GetNestedTypes ()

 

Publicado: octubre de 2016

Devuelve los tipos públicos anidados en el objeto Type actual.

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

public Type[] GetNestedTypes()

Valor devuelto

Type: System.Type[]

Una matriz de objetos Type que representan los tipos públicos anidados en el objeto Type actual (la búsqueda no es recursiva), o una matriz vacía de tipo Type si no hay tipos públicos anidados en el objeto Type actual.

El GetNestedTypes método no devuelve tipos en un orden específico, como alfabético o el orden de declaración. El código no debe depender del orden en que se devuelven los tipos, porque ese orden varía.

Se devuelven los tipos públicos anidados inmediatamente en el tipo actual; la búsqueda no es recursiva.

La siguiente tabla muestra qué miembros de una clase base que son devueltos por el Get métodos cuando se reflejan en un tipo.

Tipo de miembro

Estático

No estático

Constructor

No

No

Campo

No

Sí. Un campo siempre es ocultar por nombre y firma.

Evento

No es aplicable

La regla de sistema de tipos común es que la herencia es igual que el de los métodos que implementan la propiedad. La reflexión trata las propiedades como ocultar por nombre y firma. Véase la nota 2.

Método

No

Sí. Un método (tanto virtual como no virtual) puede ser ocultar por nombre u ocultar por nombre y firma.

Tipo anidado

No

No

Propiedad

No es aplicable

La regla de sistema de tipos común es que la herencia es igual que el de los métodos que implementan la propiedad. La reflexión trata las propiedades como ocultar por nombre y firma. Véase la nota 2.

  1. Ocultar por nombre y firma considera que todas las partes de la firma, incluidos los modificadores personalizados, devolución tipos, tipos de parámetro, centinelas y las convenciones de llamada no administradas. Se trata de una comparación binaria.

  2. Para la reflexión, propiedades y eventos son ocultar por nombre y firma. Si tiene una propiedad con una operación get y un descriptor de acceso set de la clase base, pero la clase derivada tiene sólo un descriptor de acceso get, la propiedad de la clase derivada oculta la propiedad de clase base y no podrá tener acceso el establecedor de la clase base.

  3. Atributos personalizados no forman parte del sistema de tipos comunes.

Si la corriente Type representa un parámetro de tipo en la definición de un tipo genérico o un método genérico, este método busca los tipos anidados de la restricción de clase.

Si un tipo anidado es genérico, este método devuelve su definición de tipo genérico. Esto ocurre incluso si el tipo genérico envolvente es un tipo construido cerrado.

System_CAPS_noteNota

Si la corriente Type representa un tipo genérico definido en C#, Visual Basic o C++, sus tipos anidados todos son genéricos aunque no tengan ningún parámetro genérico propio. Esto no es necesariamente cierto de tipos anidados definidos en ensamblados dinámicos o compilados con la Ilasm.exe (IL Assembler).

Para obtener información sobre los tipos genéricos anidados y generar tipos genéricos anidados de sus definiciones de tipo genérico, vea MakeGenericType.

En el ejemplo siguiente se define una clase anidada y un struct en MyClass, y, a continuación, obtiene los objetos de los tipos anidados mediante el tipo de MyClass.


using System;
using System.Reflection;
public class MyClass 
{
    public class NestClass 
    {
        public static int myPublicInt=0;
    }
    public struct NestStruct
    {
        public static int myPublicInt=0;
    }
}

public class MyMainClass 
{
    public static void Main() 
    {
        try
        {
            // Get the Type object corresponding to MyClass.
            Type myType=typeof(MyClass);
            // Get an array of nested type objects in MyClass. 
            Type[] nestType=myType.GetNestedTypes();
            Console.WriteLine("The number of nested types is {0}.", nestType.Length);
            foreach(Type t in nestType)
                Console.WriteLine("Nested type is {0}.", t.ToString());
        }
        catch(Exception e)
        {
            Console.WriteLine("Error"+e.Message);  
        }         
    }
}

.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar: