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 determinado, 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 se devuelven los Get métodos cuando se reflejan en un tipo.

Tipo de miembro

Estático

No estáticos

Constructor

No

No

Campo

No

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

Evento

No es aplicable

La regla de sistema de tipo común es que la herencia es igual que la de los métodos que implementa 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 (virtual y no virtuales) pueden ocultar por nombre u ocultar por nombre y firma.

Tipo anidado

No

No

Propiedad

No es aplicable

La regla de sistema de tipo común es que la herencia es igual que la de los métodos que implementa 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, devuelven 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 están ocultos por nombre y firma. Si tiene una propiedad con una operación get y un descriptor de acceso de la clase base, pero la clase derivada tiene solo un descriptor de acceso get, la propiedad de 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 actual Type representa un parámetro de tipo en la definición de un tipo genérico o de 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 actual Type representa un tipo genérico definido en C#, Visual Basic o C++, sus tipos anidados son genéricos todos los incluso si no tienen ningún parámetro genérico por sí mismos. Esto no es necesariamente así de los 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 sobre la creación de 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 MyClassy, a continuación, obtenga 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: