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, Type, Type[], ParameterModifier[])

Busca la propiedad pública especificada cuyos parámetros coincidan con los tipos y modificadores de los argumentos especificados.

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

public PropertyInfo GetProperty(
	string name,
	Type returnType,
	Type[] types,
	ParameterModifier[] modifiers
)

Parámetros

name
Tipo: System.String
Cadena que contiene el nombre de la propiedad pública que se va a obtener.
returnType
Tipo: System.Type
tipo de valor devuelto de la propiedad.
types
Tipo: System.Type[]
Matriz de objetos Type que representa el número, el orden y el tipo de parámetros que la propiedad indizada debe obtener.
O bien
Matriz vacía del tipo Type (es decir, Type[] types = new Type[0]) para obtener una propiedad que no esté indizada.
modifiers
Tipo: System.Reflection.ParameterModifier[]
Matriz de objetos ParameterModifier que representan los atributos asociados al elemento correspondiente de la matriz types. El enlazador predeterminado no procesa este parámetro.

Valor devuelto

Tipo: System.Reflection.PropertyInfo
Objeto que representa la propiedad pública que coincide con los requisitos especificados, si se encuentra; en caso contrario, es null.

Implementaciones

_Type.GetProperty(String, Type, Type[], ParameterModifier[])

ExcepciónCondición
AmbiguousMatchException

Existe más de una propiedad con el nombre especificado que coincide con los modificadores y tipos de argumentos especificados.

ArgumentNullException

name es null.

O bien

types es null.

ArgumentException

types es multidimensional.

O bien

modifiers es multidimensional.

O bien

types y modifiers no tienen la misma longitud.

NullReferenceException

Un elemento de types es null.

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.

Aunque el enlazador predeterminado no procesa ParameterModifier (el parámetro modifiers), se puede utilizar la clase abstracta System.Reflection.Binder para escribir un enlazador predeterminado que procese modifiers. ParameterModifier se utiliza únicamente cuando se llama a través de la interoperabilidad COM y solo se controlan los parámetros que se pasan por referencia.

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.

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.

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 un objeto Type que se corresponde con MyPropertyClass y la propiedad indizada de esta clase se recupera mediante los argumentos que se han pasado al método GetProperty.


using System;
using System.Reflection;
public class MyPropertyClass
{
    private int [,] myPropertyArray = new int[10,10]; 
    // Declare an indexer.
    public int this [int i,int j]
    {
        get 
        {
            return myPropertyArray[i,j];
        }
        set 
        {
            myPropertyArray[i,j] = value;
        }
    }
}
public class MyTypeClass
{
    public static void Main()
    {
        try
        {
            Type myType=typeof(MyPropertyClass);
            Type[] myTypeArray = new Type[2];
            // Create an instance of the Type array representing the number, order 
            // and type of the parameters for the property.
            myTypeArray.SetValue(typeof(int),0);
            myTypeArray.SetValue(typeof(int),1);
            // Search for the indexed property whose parameters match the
            // specified argument types and modifiers.
            PropertyInfo myPropertyInfo = myType.GetProperty("Item",
                typeof(int),myTypeArray,null);
            Console.WriteLine(myType.FullName + "." + myPropertyInfo.Name + 
                " has a property type of " + myPropertyInfo.PropertyType);
         }
        catch(Exception ex)
        {
            Console.WriteLine("An exception occurred " + ex.Message);
        }
    }
}


.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

.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