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.GetProperty (Método) (String)

Busca la propiedad pública con el nombre especificado.

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

public PropertyInfo GetProperty(
	string name
)

Parámetros

name
Tipo: System.String
Cadena que contiene el nombre de la propiedad pública que se va a obtener.

Valor devuelto

Tipo: System.Reflection.PropertyInfo
Objeto que representa la propiedad pública con el nombre especificado, si se encuentra; en caso contrario, null.

Implementaciones

_Type.GetProperty(String)

ExcepciónCondición
AmbiguousMatchException

Existe más de una propiedad con el nombre especificado. Vea la sección Comentarios.

ArgumentNullException

name es null.

La búsqueda de name distingue entre mayúsculas y minúsculas. La búsqueda incluye las propiedades estáticas públicas y propiedades de instancias públicas.

Se considera que una propiedad es pública para la reflexión si tiene al menos un descriptor de acceso que es público. De lo contrario la propiedad se considera privada y se debe usar BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (en Visual Basic, combine los valores mediante Or) para obtenerlo.

Si el objeto Type actual representa un tipo genérico construido, este método devuelve PropertyInfo 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 las propiedades de la restricción de clase.

Las situaciones en las que puede producirse AmbiguousMatchException incluyen:

  • Un tipo contiene dos propiedades indizadas con el mismo nombre pero diferente cantidad de parámetros. Para resolver la ambigüedad, utilice una sobrecarga del método GetProperty que especifique los tipos de parámetro.

  • Un tipo derivado declara una propiedad que oculta una propiedad heredada con el mismo nombre, utilizando el modificador (new (Shadows en Visual Basic) . Para resolver la ambigüedad, utilice la sobrecarga del método GetProperty(String, BindingFlags) e incluya BindingFlags.DeclaredOnly para restringir la búsqueda a miembros que no se hereden.

Indizadores y propiedades predeterminadas

Visual Basic 2005, Visual C# 2005 y Visual C++ 2005 tienen una sintaxis simplificada para obtener acceso a las propiedades indizadas y permiten que una propiedad indizada sea una propiedad predeterminada para su tipo. Por ejemplo, si la variable myList hace referencia a un objeto ArrayList, la sintaxis myList[3] (myList(3) en Visual Basic) recupera el elemento con el índice 3. Puede sobrecargar la propiedad.

En C#, esta característica se denomina indizador y no se puede hacer referencia a ella por el nombre. De forma predeterminada, un indizador de C# aparece en los metadatos como una propiedad indizada denominada "Item". Sin embargo, un desarrollador de bibliotecas de clases puede utilizar el atributo IndexerNameAttribute para cambiar el nombre del indizador en los metadatos. Por ejemplo, la clase String tiene un indizador denominado Chars. Las propiedades indizadas creadas con lenguajes distintos de C# también pueden tener nombres diferentes de Item.

Para determinar si un tipo tiene una propiedad predeterminada, utilice el método GetCustomAttributes(Type, Boolean) para probar el atributo DefaultMemberAttribute. Si el tipo tiene DefaultMemberAttribute, la propiedad MemberName devuelve el nombre de la propiedad predeterminada.

En el siguiente ejemplo se obtiene el objeto Type de una clase definida por el usuario, se recupera una propiedad de dicha clase y se muestra el nombre de la propiedad.



using System;
using System.Reflection;

class MyClass
{
    private int myProperty;
    // Declare MyProperty.
    public int MyProperty
    {
        get
        {
            return myProperty;
        }
        set
        {
            myProperty=value;
        }
    }
}
public class MyTypeClass
{
    public static void Main(string[] args)
    {
        try
        {
            // Get the Type object corresponding to MyClass.
            Type myType=typeof(MyClass);       
            // Get the PropertyInfo object by passing the property name.
            PropertyInfo myPropInfo = myType.GetProperty("MyProperty");
            // Display the property name.
            Console.WriteLine("The {0} property exists in MyClass.", myPropInfo.Name);
        }
        catch(NullReferenceException e)
        {
            Console.WriteLine("The property does not exist in MyClass." + e.Message);
        }
    }
}


Internamente, se hace referencia a esta propiedad en los metadatos por el nombre "Item". Cualquier intento de obtener la clase PropertyInfo utilizando la reflexión debe especificar este nombre interno para devolver correctamente la propiedad PropertyInfo.

.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:
© 2015 Microsoft