Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Type.GetField (Método) (String, BindingFlags)

Busca el campo especificado mediante las restricciones de enlace especificadas.

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

public abstract FieldInfo GetField(
	string name,
	BindingFlags bindingAttr
)

Parámetros

name
Tipo: System.String
Cadena que contiene el nombre del campo de datos que se va a obtener.
bindingAttr
Tipo: System.Reflection.BindingFlags
Máscara de bits formada por una o varias enumeraciones BindingFlags que especifican la forma en que se realiza la búsqueda.
O bien
Cero, para devolver null.

Valor devuelto

Tipo: System.Reflection.FieldInfo
Objeto que representa el campo que coincide con los requisitos especificados, si se encuentra; en caso contrario, es null.

Implementaciones

_Type.GetField(String, BindingFlags)
IReflect.GetField(String, BindingFlags)

ExcepciónCondición
ArgumentNullException

name es null.

En la tabla siguiente se muestra qué miembros de una clase base devuelven los métodos Get cuando se reflejan en un tipo.

Tipo de miembro

Estático

No estático

Constructor

No

No

Campo

No

Sí. Un campo siempre está oculto por nombre y firma.

Evento

No es aplicable

Según la regla del sistema de tipos comunes, la herencia es la misma que la de los métodos que implementan la propiedad. La reflexión trata las propiedades de acuerdo con la regla "Ocultar por nombre y firma". Vea la nota 2.

Método

No

Sí. Cualquier método (tanto virtual como no virtual) puede estar oculto por nombre o por nombre y firma.

Tipo anidado

No

No

Propiedad

No es aplicable

Según la regla del sistema de tipos comunes, la herencia es la misma que la de los métodos que implementan la propiedad. La reflexión trata las propiedades de acuerdo con la regla "Ocultar por nombre y firma". Vea la nota 2.

  1. La regla "Ocultar por nombre y firma" tiene en cuenta todas las partes de la firma, incluidos los modificadores personalizados, los tipos de valores devueltos, los tipos de parámetros, los centinelas y las convenciones de llamada no administradas. Se trata de una comparación binaria.

  2. En el caso de la reflexión, las propiedades y los eventos están ocultos por nombre y firma. Si existe una propiedad con un descriptor de acceso get y otro set en la clase base, pero la clase derivada solo tiene un descriptor de acceso get, la propiedad de la clase derivada oculta la propiedad de la clase base y no se podrá obtener acceso al descriptor de acceso set de la clase base.

  3. Los atributos personalizados no forman parte del sistema de tipos comunes.

Las siguientes marcas de filtro BindingFlags pueden utilizarse para definir qué campos van a incluirse en la búsqueda:

  • Especifique BindingFlags.Instance o BindingFlags.Static para obtener un valor devuelto.

  • Especifique BindingFlags.Public para incluir campos públicos en la búsqueda.

  • Especifique BindingFlags.NonPublic para incluir campos no públicos (es decir, campos privados, internos y protegidos) en la búsqueda.

  • Especifique BindingFlags.FlattenHierarchy para incluir los miembros estáticos public y protected en la jerarquía; no se incluyen los miembros estáticos private de las clases heredadas.

Las siguientes marcas de modificación BindingFlags pueden utilizarse para cambiar la forma en que se lleva a cabo la búsqueda:

  • BindingFlags.IgnoreCase para pasar por alto la distinción entre mayúsculas y minúsculas de name.

  • BindingFlags.DeclaredOnly para buscar solo los campos declarados en Type, no los campos simplemente heredados.

Para obtener más información, vea System.Reflection.BindingFlags.

Si el objeto Type actual representa un tipo genérico construido, este método devuelve FieldInfo con los parámetros de tipo sustituidos por los argumentos de tipo adecuados.

Si el objeto Type actual representa un parámetro de tipo en la definición de un tipo genérico o de un método genérico, este método busca los campos de la restricción de clase.

En el siguiente ejemplo se obtiene el objeto Type de la clase especificada, se obtiene el objeto FieldInfo del campo que coincide con las marcas de enlace especificadas y se muestra el valor del campo.



using System;
using System.Reflection;

public class MyFieldClassA
{
    public string Field = "A Field";
}

public class MyFieldClassB
{
    private string field = "B Field";
    public string Field 
    {
        get
        {
            return field;
        }
        set
        {
            if (field!=value)
            {
                field=value;
            }
        }
    }
}

public class MyFieldInfoClass
{
    public static void Main()
    {
        MyFieldClassB myFieldObjectB = new MyFieldClassB();
        MyFieldClassA myFieldObjectA = new MyFieldClassA();

        Type myTypeA = typeof(MyFieldClassA);
        FieldInfo myFieldInfo = myTypeA.GetField("Field");

        Type myTypeB = typeof(MyFieldClassB);
        FieldInfo myFieldInfo1 = myTypeB.GetField("field", 
            BindingFlags.NonPublic | BindingFlags.Instance);

        Console.WriteLine("The value of the public field is: '{0}'", 
            myFieldInfo.GetValue(myFieldObjectA));
        Console.WriteLine("The value of the private field is: '{0}'", 
            myFieldInfo1.GetValue(myFieldObjectB));
    }
}


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft