Type.GetProperty Metoda

Definice

Získá konkrétní vlastnost aktuálního Type .Gets a specific property of the current Type.

Přetížení

GetProperty(String)

Vyhledá veřejnou vlastnost se zadaným názvem.Searches for the public property with the specified name.

GetProperty(String, BindingFlags)

Vyhledá zadanou vlastnost pomocí zadaných omezení vazby.Searches for the specified property, using the specified binding constraints.

GetProperty(String, Type)

Vyhledá veřejnou vlastnost se zadaným názvem a návratovým typem.Searches for the public property with the specified name and return type.

GetProperty(String, Type[])

Vyhledá zadanou veřejnou vlastnost, jejíž parametry odpovídají zadaným typům argumentů.Searches for the specified public property whose parameters match the specified argument types.

GetProperty(String, Type, Type[])

Vyhledá zadanou veřejnou vlastnost, jejíž parametry odpovídají zadaným typům argumentů.Searches for the specified public property whose parameters match the specified argument types.

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

Vyhledá zadanou veřejnou vlastnost, jejíž parametry odpovídají zadaným typům a modifikátorům argumentů.Searches for the specified public property whose parameters match the specified argument types and modifiers.

GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

Vyhledá zadanou vlastnost, jejíž parametry odpovídají zadaným typům a modifikátorům argumentů pomocí zadaných omezení vazby.Searches for the specified property whose parameters match the specified argument types and modifiers, using the specified binding constraints.

GetProperty(String)

Vyhledá veřejnou vlastnost se zadaným názvem.Searches for the public property with the specified name.

public:
 System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name);
public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name);
public System.Reflection.PropertyInfo? GetProperty (string name);
public System.Reflection.PropertyInfo GetProperty (string name);
member this.GetProperty : string -> System.Reflection.PropertyInfo
abstract member GetProperty : string -> System.Reflection.PropertyInfo
override this.GetProperty : string -> System.Reflection.PropertyInfo
Public Function GetProperty (name As String) As PropertyInfo

Parametry

name
String

Řetězec obsahující název veřejné vlastnosti, která má být získána.The string containing the name of the public property to get.

Návraty

PropertyInfo

Objekt představující veřejnou vlastnost se zadaným názvem, pokud byl nalezen; v opačném případě null .An object representing the public property with the specified name, if found; otherwise, null.

Implementuje

Výjimky

Našla se více než jedna vlastnost se zadaným názvem.More than one property is found with the specified name.

name je null.name is null.

Příklady

Následující příklad načte Type objekt uživatelsky definované třídy, načte vlastnost této třídy a zobrazí název vlastnosti.The following example retrieves the Type object of a user-defined class, retrieves a property of that class, and displays the property name.

using namespace System;
using namespace System::Reflection;
ref class MyClass
{
private:
   int myProperty;

public:

   property int MyProperty 
   {
      // Declare MyProperty.
      int get()
      {
         return myProperty;
      }

      void set( int value )
      {
         myProperty = value;
      }
   }
};

int main()
{
   try
   {
      // Get the Type object corresponding to MyClass.
      Type^ myType = MyClass::typeid;
      
      // 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. {0}", e->Message );
   }
}

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);
        }
    }
}
Imports System.Reflection
Class MyClass1
    Private myProperty1 As Integer
    ' Declare MyProperty.

    Public Property MyProperty() As Integer
        Get
            Return myProperty1
        End Get
        Set(ByVal Value As Integer)
            myProperty1 = Value
        End Set
    End Property
End Class

Public Class MyTypeClass
    Public Shared Sub Main(ByVal args() As String)
        Try
            ' Get Type Object corresponding to MyClass.
            Dim myType As Type = GetType(MyClass1)
            ' Get PropertyInfo object by passing property name.
            Dim myPropInfo As PropertyInfo = myType.GetProperty("MyProperty")
            ' Display Name propety to console.
            Console.WriteLine("The {0} property exists in MyClass.", myPropInfo.Name)
        Catch e As NullReferenceException
            Console.WriteLine("The property does not exist in MyClass.", e.Message.ToString())
        End Try
    End Sub
End Class

Interně Tato vlastnost je odkazována v metadatech podle názvu "Item".Internally, this property is referred to in the metadata by the name "Item." Všechny pokusy o získání PropertyInfo použití reflexe musí zadat tento interní název, aby bylo možné správně vrátit PropertyInfo vlastnost.Any attempt to get PropertyInfo using reflection must specify this internal name in order to correctly return the PropertyInfo property.

Poznámky

Hledání rozlišuje name velká a malá písmena.The search for name is case-sensitive. Hledání zahrnuje vlastnosti veřejných statických instancí a veřejných instancí.The search includes public static and public instance properties.

Vlastnost je považována za veřejnou pro reflexi, pokud má alespoň jednu veřejnou přístupovou metodu.A property is considered public to reflection if it has at least one accessor that is public. V opačném případě je vlastnost považována za soukromou a je nutné použít BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (v Visual Basic kombinovat hodnoty pomocí Or ) a získat je.Otherwise the property is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda PropertyInfo s parametry typu nahrazenými odpovídajícími argumenty typu.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

Pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, tato metoda prohledá vlastnosti omezení třídy.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the properties of the class constraint.

Mezi situace, ke kterým AmbiguousMatchException dochází, patří následující:Situations in which AmbiguousMatchException occurs include the following:

  • Typ obsahuje dvě indexované vlastnosti, které mají stejný název, ale různé počty parametrů.A type contains two indexed properties that have the same name but different numbers of parameters. Chcete-li vyřešit nejednoznačnost, použijte přetížení GetProperty metody, která určuje typy parametrů.To resolve the ambiguity, use an overload of the GetProperty method that specifies parameter types.

  • Odvozený typ deklaruje vlastnost, která skrývá zděděnou vlastnost se stejným názvem, pomocí new modifikátoru ( Shadows v Visual Basic).A derived type declares a property that hides an inherited property with the same name, by using the new modifier (Shadows in Visual Basic). Chcete-li vyřešit nejednoznačnost, použijte GetProperty(String, BindingFlags) přetížení metody a přidejte BindingFlags.DeclaredOnly příznak, který omezí hledání na nezděděné členy.To resolve the ambiguity, use the GetProperty(String, BindingFlags) method overload and add the BindingFlags.DeclaredOnly flag to restrict the search to members that are not inherited.

Indexery a výchozí vlastnostiIndexers and Default Properties

Visual Basic 2005, Visual C# 2005 a Visual C++ 2005 mají zjednodušenou syntaxi pro přístup k indexovaným vlastnostem a umožňují, aby jedna indexovaná vlastnost byla pro svůj typ výchozí.Visual Basic 2005, Visual C# 2005, and Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. Například pokud proměnná myList odkazuje na ArrayList , syntaxe myList[3] ( myList(3) v Visual Basic) načte element s indexem 3.For example, if the variable myList refers to an ArrayList, the syntax myList[3] (myList(3) in Visual Basic) retrieves the element with the index of 3. Vlastnost můžete přetížit.You can overload the property.

V jazyce C# se tato funkce nazývá indexer a nelze na ni odkazovat pomocí názvu.In C#, this feature is called an indexer and cannot be referred to by name. Ve výchozím nastavení se indexer C# zobrazuje v metadatech jako indexovaná vlastnost s názvem Item.By default, a C# indexer appears in metadata as an indexed property named "Item". Nicméně Vývojář knihovny tříd může použít IndexerNameAttribute atribut ke změně názvu indexeru v metadatech.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. StringTřída má například indexer s názvem Chars[] .For example, the String class has an indexer named Chars[]. Indexované vlastnosti vytvořené pomocí jiných jazyků než C# rovněž mohou mít jiné názvy než Item.Indexed properties created using languages other than C# can have names other than Item, as well.

Chcete-li určit, zda má typ výchozí vlastnost, použijte GetCustomAttributes(Type, Boolean) metodu pro otestování DefaultMemberAttribute atributu.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. Pokud má typ DefaultMemberAttribute MemberName hodnotu, vlastnost vrátí název výchozí vlastnosti.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

Viz také

Platí pro

GetProperty(String, BindingFlags)

Vyhledá zadanou vlastnost pomocí zadaných omezení vazby.Searches for the specified property, using the specified binding constraints.

public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, System::Reflection::BindingFlags bindingAttr);
public System.Reflection.PropertyInfo? GetProperty (string name, System.Reflection.BindingFlags bindingAttr);
public System.Reflection.PropertyInfo GetProperty (string name, System.Reflection.BindingFlags bindingAttr);
abstract member GetProperty : string * System.Reflection.BindingFlags -> System.Reflection.PropertyInfo
override this.GetProperty : string * System.Reflection.BindingFlags -> System.Reflection.PropertyInfo
Public Function GetProperty (name As String, bindingAttr As BindingFlags) As PropertyInfo

Parametry

name
String

Řetězec obsahující název vlastnosti, která má být získána.The string containing the name of the property to get.

bindingAttr
BindingFlags

Bitová kombinace hodnot výčtu, které určují, jak se provádí hledání.A bitwise combination of the enumeration values that specify how the search is conducted.

-nebo--or- Default pro návrat null .Default to return null.

Návraty

PropertyInfo

Objekt představující vlastnost, která odpovídá zadaným požadavkům, pokud byla nalezena; v opačném případě null .An object representing the property that matches the specified requirements, if found; otherwise, null.

Implementuje

Výjimky

Našla se více než jedna vlastnost se zadaným názvem a odpovídá zadaným omezením vazby.More than one property is found with the specified name and matching the specified binding constraints.

name je null.name is null.

Příklady

Následující příklad načte typ uživatelsky definované třídy, načte vlastnost této třídy a zobrazí název vlastnosti v souladu se zadanými omezeními vazby.The following example retrieves the type of a user-defined class, retrieves a property of that class and displays the property name in accordance with the specified binding constraints.

using namespace System;
using namespace System::Reflection;
ref class MyClass
{
private:
   int myProperty;

public:

   property int MyProperty 
   {
      // Declare MyProperty.
      int get()
      {
         return myProperty;
      }

      void set( int value )
      {
         myProperty = value;
      }
   }
};

int main()
{
   try
   {
      // Get Type object of MyClass.
      Type^ myType = MyClass::typeid;
      
      // Get the PropertyInfo by passing the property name and specifying the BindingFlags.
      PropertyInfo^ myPropInfo = myType->GetProperty( "MyProperty", static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Instance) );
      
      // Display Name propety to console.
      Console::WriteLine( "{0} is a property of MyClass.", myPropInfo->Name );
   }
   catch ( NullReferenceException^ e ) 
   {
      Console::WriteLine( "MyProperty does not exist in MyClass. {0}", e->Message );
   }
}

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 Type object of MyClass.
            Type myType=typeof(MyClass);
            // Get the PropertyInfo by passing the property name and specifying the BindingFlags.
            PropertyInfo myPropInfo = myType.GetProperty("MyProperty", BindingFlags.Public | BindingFlags.Instance);
            // Display Name propety to console.
            Console.WriteLine("{0} is a property of MyClass.", myPropInfo.Name);
        }
        catch(NullReferenceException e)
        {
            Console.WriteLine("MyProperty does not exist in MyClass." +e.Message);
        }
    }
}

Imports System.Reflection
Module Module1
    Public Class MyClass1
        Private myProperty1 As Integer
        ' Declare MyProperty.
        Public Property MyProperty() As Integer
            Get
                Return myProperty1
            End Get
            Set(ByVal Value As Integer)
                myProperty1 = Value
            End Set
        End Property
        Public Shared Sub Main()
            Try
                ' Get a Type object corresponding to MyClass.
                Dim myType As Type = GetType(MyClass1)
                ' Get a PropertyInfo object by passing property name and specifying BindingFlags.
                Dim myPropInfo As PropertyInfo = myType.GetProperty("MyProperty", BindingFlags.Public Or BindingFlags.Instance)
                ' Display the Name property.
                Console.WriteLine("{0} is a property of MyClass.", myPropInfo.Name)
            Catch e As NullReferenceException
                Console.WriteLine("MyProperty does not exist in MyClass.", e.Message.ToString())
            End Try
        End Sub
    End Class
End Module 'Module1

Poznámky

Vlastnost je považována za veřejnou pro reflexi, pokud má alespoň jednu veřejnou přístupovou metodu.A property is considered public to reflection if it has at least one accessor that is public. V opačném případě je vlastnost považována za soukromou a je nutné použít BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (v Visual Basic kombinovat hodnoty pomocí Or ) a získat je.Otherwise the property is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

Následující BindingFlags příznaky filtru lze použít k definování vlastností, které mají být zahrnuty do hledání:The following BindingFlags filter flags can be used to define which properties to include in the search:

  • BindingFlags.Instance BindingFlags.Static Chcete-li získat návrat, je nutné zadat buď nebo.You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • Určuje, BindingFlags.Public že se mají ve vyhledávání zahrnout veřejné vlastnosti.Specify BindingFlags.Public to include public properties in the search.

  • Určete, BindingFlags.NonPublic že se ve vyhledávání mají zahrnout neveřejné vlastnosti (tj. vlastnosti Private, internal a Protected).Specify BindingFlags.NonPublic to include non-public properties (that is, private, internal, and protected properties) in the search.

  • Určete, BindingFlags.FlattenHierarchy že se mají zahrnout public a protected statické členy v hierarchii. private statické členy v děděných třídách nejsou zahrnuté.Specify BindingFlags.FlattenHierarchy to include public and protected static members up the hierarchy; private static members in inherited classes are not included.

Následující BindingFlags příznaky modifikátoru lze použít ke změně toho, jak hledání funguje:The following BindingFlags modifier flags can be used to change how the search works:

  • BindingFlags.IgnoreCase pro ignorování velkých a malých písmen name .BindingFlags.IgnoreCase to ignore the case of name.

  • BindingFlags.DeclaredOnly Chcete-li hledat pouze vlastnosti deklarované v Type , nikoli vlastnosti, které byly jednoduše děděny.BindingFlags.DeclaredOnly to search only the properties declared on the Type, not properties that were simply inherited.

Další informace naleznete v tématu System.Reflection.BindingFlags.See System.Reflection.BindingFlags for more information.

Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda PropertyInfo s parametry typu nahrazenými odpovídajícími argumenty typu.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

Pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, tato metoda prohledá vlastnosti omezení třídy.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the properties of the class constraint.

Mezi situace, ke kterým AmbiguousMatchException dochází, patří následující:Situations in which AmbiguousMatchException occurs include the following:

  • Typ obsahuje dvě indexované vlastnosti, které mají stejný název, ale různé počty parametrů.A type contains two indexed properties that have the same name but different numbers of parameters. Chcete-li vyřešit nejednoznačnost, použijte přetížení GetProperty metody, která určuje typy parametrů.To resolve the ambiguity, use an overload of the GetProperty method that specifies parameter types.

  • Odvozený typ deklaruje vlastnost, která skrývá zděděnou vlastnost se stejným názvem, pomocí new modifikátoru ( Shadows v Visual Basic).A derived type declares a property that hides an inherited property with the same name, using the new modifier (Shadows in Visual Basic). Chcete-li vyřešit nejednoznačnost, zahrňte BindingFlags.DeclaredOnly k omezení vyhledávání na nezděděné členy.To resolve the ambiguity, include BindingFlags.DeclaredOnly to restrict the search to members that are not inherited.

Indexery a výchozí vlastnostiIndexers and Default Properties

Visual Basic 2005, Visual C# 2005 a Visual C++ 2005 mají zjednodušenou syntaxi pro přístup k indexovaným vlastnostem a umožňují, aby jedna indexovaná vlastnost byla pro svůj typ výchozí.Visual Basic 2005, Visual C# 2005, and Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. Například pokud proměnná myList odkazuje na ArrayList , syntaxe myList[3] ( myList(3) v Visual Basic) načte element s indexem 3.For example, if the variable myList refers to an ArrayList, the syntax myList[3] (myList(3) in Visual Basic) retrieves the element with the index of 3. Vlastnost můžete přetížit.You can overload the property.

V jazyce C# se tato funkce nazývá indexer a nelze na ni odkazovat pomocí názvu.In C#, this feature is called an indexer and cannot be referred to by name. Ve výchozím nastavení se indexer C# zobrazuje v metadatech jako indexovaná vlastnost s názvem Item.By default, a C# indexer appears in metadata as an indexed property named "Item". Nicméně Vývojář knihovny tříd může použít IndexerNameAttribute atribut ke změně názvu indexeru v metadatech.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. StringTřída má například indexer s názvem Chars[] .For example, the String class has an indexer named Chars[]. Indexované vlastnosti vytvořené pomocí jiných jazyků než C# rovněž mohou mít jiné názvy než Item.Indexed properties created using languages other than C# can have names other than Item, as well.

Chcete-li určit, zda má typ výchozí vlastnost, použijte GetCustomAttributes(Type, Boolean) metodu pro otestování DefaultMemberAttribute atributu.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. Pokud má typ DefaultMemberAttribute MemberName hodnotu, vlastnost vrátí název výchozí vlastnosti.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

Viz také

Platí pro

GetProperty(String, Type)

Vyhledá veřejnou vlastnost se zadaným názvem a návratovým typem.Searches for the public property with the specified name and return type.

public:
 System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, Type ^ returnType);
public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, Type ^ returnType);
public System.Reflection.PropertyInfo? GetProperty (string name, Type? returnType);
public System.Reflection.PropertyInfo GetProperty (string name, Type returnType);
member this.GetProperty : string * Type -> System.Reflection.PropertyInfo
abstract member GetProperty : string * Type -> System.Reflection.PropertyInfo
override this.GetProperty : string * Type -> System.Reflection.PropertyInfo
Public Function GetProperty (name As String, returnType As Type) As PropertyInfo

Parametry

name
String

Řetězec obsahující název veřejné vlastnosti, která má být získána.The string containing the name of the public property to get.

returnType
Type

Návratový typ vlastnosti.The return type of the property.

Návraty

PropertyInfo

Objekt představující veřejnou vlastnost se zadaným názvem, pokud byl nalezen; v opačném případě null .An object representing the public property with the specified name, if found; otherwise, null.

Implementuje

Výjimky

Našla se více než jedna vlastnost se zadaným názvem.More than one property is found with the specified name.

name je null , nebo returnType null .name is null, or returnType is null.

Příklady

Následující příklad definuje třídu s jednou vlastností a načítá název a typ vlastnosti.The following example defines a class with one property and retrieves the name and type of the property.

using namespace System;
using namespace System::Reflection;
ref class MyClass1
{
private:
   String^ myMessage;

public:

   property String^ MyProperty1 
   {
      String^ get()
      {
         return myMessage;
      }

      void set( String^ value )
      {
         myMessage = value;
      }
   }
};

int main()
{
   try
   {
      Type^ myType = MyClass1::typeid;
      
      // Get the PropertyInfo Object* representing MyProperty1.
      PropertyInfo^ myStringProperties1 = myType->GetProperty( "MyProperty1", String::typeid );
      Console::WriteLine( "The name of the first property of MyClass1 is {0}.", myStringProperties1->Name );
      Console::WriteLine( "The type of the first property of MyClass1 is {0}.", myStringProperties1->PropertyType );
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "ArgumentNullException : {0}", e->Message );
   }
   catch ( AmbiguousMatchException^ e ) 
   {
      Console::WriteLine( "AmbiguousMatchException : {0}", e->Message );
   }
   catch ( NullReferenceException^ e ) 
   {
      Console::WriteLine( "Source : {0}", e->Source );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   //Output:
   //The name of the first property of MyClass1 is MyProperty1.
   //The type of the first property of MyClass1 is System.String.

}

using System;
using System.Reflection;

class MyClass1
{
    String myMessage="Hello World.";
    public string MyProperty1
    {
        get
        {			
            return myMessage;
        }
        set
        {
            myMessage =value;
        }			
    }
}
class TestClass
{
    static void Main()
    {
        try
        {	
            Type myType = typeof(MyClass1);
            // Get the PropertyInfo object representing MyProperty1.
            PropertyInfo myStringProperties1 = myType.GetProperty("MyProperty1",
                typeof(string));
            Console.WriteLine("The name of the first property of MyClass1 is {0}.", myStringProperties1.Name);
            Console.WriteLine("The type of the first property of MyClass1 is {0}.", myStringProperties1.PropertyType);
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException :"+e.Message);
        }
        catch(AmbiguousMatchException e)
        {
            Console.WriteLine("AmbiguousMatchException :"+e.Message);
        }
        catch(NullReferenceException e)
        {
            Console.WriteLine("Source : {0}" , e.Source);
            Console.WriteLine("Message : {0}" , e.Message);
        }
    //Output:
    //The name of the first property of MyClass1 is MyProperty1.
    //The type of the first property of MyClass1 is System.String.
    }
}
Imports System.Reflection
Class MyClass1
    Private myMessage As [String] = "Hello World."
    Public Property MyProperty1() As String
        Get
            Return myMessage
        End Get
        Set(ByVal Value As String)
            myMessage = Value
        End Set
    End Property
End Class

Class TestClass
    Shared Sub Main()
        Try
            Dim myType As Type = GetType(MyClass1)
            ' Get the PropertyInfo object representing MyProperty1. 
            Dim myStringProperties1 As PropertyInfo = myType.GetProperty("MyProperty1", GetType(String))
            Console.WriteLine("The name of the first property of MyClass1 is {0}.", myStringProperties1.Name)
            Console.WriteLine("The type of the first property of MyClass1 is {0}.", myStringProperties1.PropertyType.ToString())
        Catch e As ArgumentNullException
            Console.WriteLine("ArgumentNullException :" + e.Message.ToString())
        Catch e As AmbiguousMatchException
            Console.WriteLine("AmbiguousMatchException :" + e.Message.ToString())
        Catch e As NullReferenceException
            Console.WriteLine("Source : {0}", e.Source.ToString())
            Console.WriteLine("Message : {0}", e.Message.ToString())
        End Try
    'Output:
    'The name of the first property of MyClass1 is MyProperty1.
    'The type of the first property of MyClass1 is System.String.

    End Sub
End Class

Poznámky

Vlastnost je považována za veřejnou pro reflexi, pokud má alespoň jednu veřejnou přístupovou metodu.A property is considered public to reflection if it has at least one accessor that is public. V opačném případě je vlastnost považována za soukromou a je nutné použít BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (v Visual Basic kombinovat hodnoty pomocí Or ) a získat je.Otherwise the property is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

Hledání rozlišuje name velká a malá písmena.The search for name is case-sensitive. Hledání zahrnuje vlastnosti veřejných statických instancí a veřejných instancí.The search includes public static and public instance properties.

Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda PropertyInfo s parametry typu nahrazenými odpovídajícími argumenty typu.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

Pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, tato metoda prohledá vlastnosti omezení třídy.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the properties of the class constraint.

Indexery a výchozí vlastnostiIndexers and Default Properties

Visual Basic 2005, Visual C# 2005 a Visual C++ 2005 mají zjednodušenou syntaxi pro přístup k indexovaným vlastnostem a umožňují, aby jedna indexovaná vlastnost byla pro svůj typ výchozí.Visual Basic 2005, Visual C# 2005, and Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. Například pokud proměnná myList odkazuje na ArrayList , syntaxe myList[3] ( myList(3) v Visual Basic) načte element s indexem 3.For example, if the variable myList refers to an ArrayList, the syntax myList[3] (myList(3) in Visual Basic) retrieves the element with the index of 3. Vlastnost můžete přetížit.You can overload the property.

V jazyce C# se tato funkce nazývá indexer a nelze na ni odkazovat pomocí názvu.In C#, this feature is called an indexer and cannot be referred to by name. Ve výchozím nastavení se indexer C# zobrazuje v metadatech jako indexovaná vlastnost s názvem Item.By default, a C# indexer appears in metadata as an indexed property named "Item". Nicméně Vývojář knihovny tříd může použít IndexerNameAttribute atribut ke změně názvu indexeru v metadatech.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. StringTřída má například indexer s názvem Chars[] .For example, the String class has an indexer named Chars[]. Indexované vlastnosti vytvořené pomocí jiných jazyků než C# rovněž mohou mít jiné názvy než Item.Indexed properties created using languages other than C# can have names other than Item, as well.

Chcete-li určit, zda má typ výchozí vlastnost, použijte GetCustomAttributes(Type, Boolean) metodu pro otestování DefaultMemberAttribute atributu.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. Pokud má typ DefaultMemberAttribute MemberName hodnotu, vlastnost vrátí název výchozí vlastnosti.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

Viz také

Platí pro

GetProperty(String, Type[])

Vyhledá zadanou veřejnou vlastnost, jejíž parametry odpovídají zadaným typům argumentů.Searches for the specified public property whose parameters match the specified argument types.

public:
 System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, cli::array <Type ^> ^ types);
public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, cli::array <Type ^> ^ types);
public System.Reflection.PropertyInfo? GetProperty (string name, Type[] types);
public System.Reflection.PropertyInfo GetProperty (string name, Type[] types);
member this.GetProperty : string * Type[] -> System.Reflection.PropertyInfo
abstract member GetProperty : string * Type[] -> System.Reflection.PropertyInfo
override this.GetProperty : string * Type[] -> System.Reflection.PropertyInfo
Public Function GetProperty (name As String, types As Type()) As PropertyInfo

Parametry

name
String

Řetězec obsahující název veřejné vlastnosti, která má být získána.The string containing the name of the public property to get.

types
Type[]

Pole Type objektů představujících počet, pořadí a typ parametrů pro indexovanou vlastnost, která má být získána.An array of Type objects representing the number, order, and type of the parameters for the indexed property to get.

-nebo--or- Prázdné pole typu Type (to znamená typ [] typy = nový typ [0]) pro získání vlastnosti, která není indexována.An empty array of the type Type (that is, Type[] types = new Type[0]) to get a property that is not indexed.

Návraty

PropertyInfo

Objekt představující veřejnou vlastnost, jejíž parametry odpovídají zadaným typům argumentů, pokud byly nalezeny; v opačném případě null .An object representing the public property whose parameters match the specified argument types, if found; otherwise, null.

Implementuje

Výjimky

Našla se více než jedna vlastnost se zadaným názvem a odpovídá zadaným typům argumentů.More than one property is found with the specified name and matching the specified argument types.

name je null.name is null.

-nebo--or- types je null.types is null.

Pole types je multidimenzionální.types is multidimensional.

Prvek types je null .An element of types is null.

Příklady

Následující příklad načte Type objekt uživatelsky definované třídy, načte vlastnost této třídy a zobrazí název vlastnosti a typ vlastnosti, jak je uvedeno v argumentech předaných do GetProperty .The following example retrieves the Type object of a user-defined class, retrieves the property of that class, and displays the property name and type of the property as specified by the arguments passed to GetProperty.

using namespace System;
using namespace System::Reflection;
ref class MyClass1
{
private:
   array<int, 2>^myArray;

public:

   property int Item [int, int]
   {

      // Declare an indexer.
      int get( int i, int j )
      {
         return myArray[ i,j ];
      }

      void set( int i, int j, int value )
      {
         myArray[ i,j ] = value;
      }

   }

};

int main()
{
   try
   {
      
      // Get the Type object.
      Type^ myType = MyClass1::typeid;
      array<Type^>^myTypeArr = gcnew array<Type^>(2);
      
      // Create an instance of a Type array.
      myTypeArr->SetValue( int::typeid, 0 );
      myTypeArr->SetValue( int::typeid, 1 );
      
      // Get the PropertyInfo object for the indexed property Item, which has two integer parameters.
      PropertyInfo^ myPropInfo = myType->GetProperty( "Item", myTypeArr );
      
      // Display the property.
      Console::WriteLine( "The {0} property exists in MyClass1.", myPropInfo );
   }
   catch ( NullReferenceException^ e ) 
   {
      Console::WriteLine( "An exception occurred." );
      Console::WriteLine( "Source : {0}", e->Source );
      Console::WriteLine( "Message : {0}", e->Message );
   }

}

using System;
using System.Reflection;
class MyClass1
{
    private int [,] myArray = {{1,2},{3,4}};
    // Declare an indexer.
    public int this [int i,int j]
    {
        get
        {
            return myArray[i,j];
        }
        set
        {
            myArray[i,j] = value;
        }
    }
}
public class MyTypeClass
{
    public static void Main(string[] args)
    {
        try
        {
            // Get the Type object.
            Type myType=typeof(MyClass1);
            Type[] myTypeArr = new Type[2];
            // Create an instance of a Type array.
            myTypeArr.SetValue(typeof(int),0);
            myTypeArr.SetValue(typeof(int),1);
            // Get the PropertyInfo object for the indexed property Item, which has two integer parameters.
            PropertyInfo myPropInfo = myType.GetProperty("Item", myTypeArr);
            // Display the property.
            Console.WriteLine("The {0} property exists in MyClass1.", myPropInfo.ToString());
        }
        catch(NullReferenceException e)
        {
            Console.WriteLine("An exception occurred.");
            Console.WriteLine("Source : {0}" , e.Source);
            Console.WriteLine("Message : {0}" , e.Message);
        }
    }
}
Imports System.Reflection

Module Module1
    Class MyClass1
        Private myArray As Integer(,) = {{1, 2}, {3, 4}}
        ' Declare an indexer.
        Default Public Property Item(ByVal i As Integer, ByVal j As Integer) As Integer
            Get
                Return myArray(i, j)
            End Get
            Set(ByVal Value As Integer)

                myArray(i, j) = Value
            End Set
        End Property
    End Class

    Public Class MyTypeClass
        Public Shared Sub Main()
            Try
                ' Get the Type Object.
                Dim myType As Type = GetType(MyClass1)
                Dim myTypeArr(1) As Type
                ' Create an instance of a Type array.
                myTypeArr.SetValue(GetType(Integer), 0)
                myTypeArr.SetValue(GetType(Integer), 1)
                ' Get the PropertyInfo object for the indexed property Item, which has two integer parameters. 
                Dim myPropInfo As PropertyInfo = myType.GetProperty("Item", myTypeArr)
                ' Display the property.
                Console.WriteLine("The {0} property exists in MyClass1.", myPropInfo.ToString())
            Catch e As NullReferenceException
                Console.WriteLine("An exception occurred.")
                Console.WriteLine("Source : {0}", e.Source.ToString())
                Console.WriteLine("Message : {0}", e.Message.ToString())
            End Try
        End Sub
    End Class
End Module 'Module1

Poznámky

Vlastnost je považována za veřejnou pro reflexi, pokud má alespoň jednu veřejnou přístupovou metodu.A property is considered public to reflection if it has at least one accessor that is public. V opačném případě je vlastnost považována za soukromou a je nutné použít BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (v Visual Basic kombinovat hodnoty pomocí Or ) a získat je.Otherwise the property is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

Hledání rozlišuje name velká a malá písmena.The search for name is case-sensitive. Hledání zahrnuje vlastnosti veřejných statických instancí a veřejných instancí.The search includes public static and public instance properties.

Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda PropertyInfo s parametry typu nahrazenými odpovídajícími argumenty typu.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

Pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, tato metoda prohledá vlastnosti omezení třídy.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the properties of the class constraint.

Indexery a výchozí vlastnostiIndexers and Default Properties

Visual Basic 2005, Visual C# 2005 a Visual C++ 2005 mají zjednodušenou syntaxi pro přístup k indexovaným vlastnostem a umožňují, aby jedna indexovaná vlastnost byla pro svůj typ výchozí.Visual Basic 2005, Visual C# 2005, and Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. Například pokud proměnná myList odkazuje na ArrayList , syntaxe myList[3] ( myList(3) v Visual Basic) načte element s indexem 3.For example, if the variable myList refers to an ArrayList, the syntax myList[3] (myList(3) in Visual Basic) retrieves the element with the index of 3. Vlastnost můžete přetížit.You can overload the property.

V jazyce C# se tato funkce nazývá indexer a nelze na ni odkazovat pomocí názvu.In C#, this feature is called an indexer and cannot be referred to by name. Ve výchozím nastavení se indexer C# zobrazuje v metadatech jako indexovaná vlastnost s názvem Item.By default, a C# indexer appears in metadata as an indexed property named "Item". Nicméně Vývojář knihovny tříd může použít IndexerNameAttribute atribut ke změně názvu indexeru v metadatech.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. StringTřída má například indexer s názvem Chars[] .For example, the String class has an indexer named Chars[]. Indexované vlastnosti vytvořené pomocí jiných jazyků než C# rovněž mohou mít jiné názvy než Item.Indexed properties created using languages other than C# can have names other than Item, as well.

Chcete-li určit, zda má typ výchozí vlastnost, použijte GetCustomAttributes(Type, Boolean) metodu pro otestování DefaultMemberAttribute atributu.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. Pokud má typ DefaultMemberAttribute MemberName hodnotu, vlastnost vrátí název výchozí vlastnosti.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

Viz také

Platí pro

GetProperty(String, Type, Type[])

Vyhledá zadanou veřejnou vlastnost, jejíž parametry odpovídají zadaným typům argumentů.Searches for the specified public property whose parameters match the specified argument types.

public:
 System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, Type ^ returnType, cli::array <Type ^> ^ types);
public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, Type ^ returnType, cli::array <Type ^> ^ types);
public System.Reflection.PropertyInfo? GetProperty (string name, Type? returnType, Type[] types);
public System.Reflection.PropertyInfo GetProperty (string name, Type returnType, Type[] types);
member this.GetProperty : string * Type * Type[] -> System.Reflection.PropertyInfo
abstract member GetProperty : string * Type * Type[] -> System.Reflection.PropertyInfo
override this.GetProperty : string * Type * Type[] -> System.Reflection.PropertyInfo
Public Function GetProperty (name As String, returnType As Type, types As Type()) As PropertyInfo

Parametry

name
String

Řetězec obsahující název veřejné vlastnosti, která má být získána.The string containing the name of the public property to get.

returnType
Type

Návratový typ vlastnosti.The return type of the property.

types
Type[]

Pole Type objektů představujících počet, pořadí a typ parametrů pro indexovanou vlastnost, která má být získána.An array of Type objects representing the number, order, and type of the parameters for the indexed property to get.

-nebo--or- Prázdné pole typu Type (to znamená typ [] typy = nový typ [0]) pro získání vlastnosti, která není indexována.An empty array of the type Type (that is, Type[] types = new Type[0]) to get a property that is not indexed.

Návraty

PropertyInfo

Objekt představující veřejnou vlastnost, jejíž parametry odpovídají zadaným typům argumentů, pokud byly nalezeny; v opačném případě null .An object representing the public property whose parameters match the specified argument types, if found; otherwise, null.

Implementuje

Výjimky

Našla se více než jedna vlastnost se zadaným názvem a odpovídá zadaným typům argumentů.More than one property is found with the specified name and matching the specified argument types.

name je null.name is null.

-nebo--or- types je null.types is null.

Pole types je multidimenzionální.types is multidimensional.

Prvek types je null .An element of types is null.

Poznámky

Vlastnost je považována za veřejnou pro reflexi, pokud má alespoň jednu veřejnou přístupovou metodu.A property is considered public to reflection if it has at least one accessor that is public. V opačném případě je vlastnost považována za soukromou a je nutné použít BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (v Visual Basic kombinovat hodnoty pomocí Or ) a získat je.Otherwise the property is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

Hledání rozlišuje name velká a malá písmena.The search for name is case-sensitive. Hledání zahrnuje vlastnosti veřejných statických instancí a veřejných instancí.The search includes public static and public instance properties.

Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda PropertyInfo s parametry typu nahrazenými odpovídajícími argumenty typu.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

Pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, tato metoda prohledá vlastnosti omezení třídy.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the properties of the class constraint.

Indexery a výchozí vlastnostiIndexers and Default Properties

Visual Basic 2005, Visual C# 2005 a Visual C++ 2005 mají zjednodušenou syntaxi pro přístup k indexovaným vlastnostem a umožňují, aby jedna indexovaná vlastnost byla pro svůj typ výchozí.Visual Basic 2005, Visual C# 2005, and Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. Například pokud proměnná myList odkazuje na ArrayList , syntaxe myList[3] ( myList(3) v Visual Basic) načte element s indexem 3.For example, if the variable myList refers to an ArrayList, the syntax myList[3] (myList(3) in Visual Basic) retrieves the element with the index of 3. Vlastnost můžete přetížit.You can overload the property.

V jazyce C# se tato funkce nazývá indexer a nelze na ni odkazovat pomocí názvu.In C#, this feature is called an indexer and cannot be referred to by name. Ve výchozím nastavení se indexer C# zobrazuje v metadatech jako indexovaná vlastnost s názvem Item.By default, a C# indexer appears in metadata as an indexed property named "Item". Nicméně Vývojář knihovny tříd může použít IndexerNameAttribute atribut ke změně názvu indexeru v metadatech.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. StringTřída má například indexer s názvem Chars[] .For example, the String class has an indexer named Chars[]. Indexované vlastnosti vytvořené pomocí jiných jazyků než C# rovněž mohou mít jiné názvy než Item.Indexed properties created using languages other than C# can have names other than Item, as well.

Chcete-li určit, zda má typ výchozí vlastnost, použijte GetCustomAttributes(Type, Boolean) metodu pro otestování DefaultMemberAttribute atributu.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. Pokud má typ DefaultMemberAttribute MemberName hodnotu, vlastnost vrátí název výchozí vlastnosti.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

Viz také

Platí pro

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

Vyhledá zadanou veřejnou vlastnost, jejíž parametry odpovídají zadaným typům a modifikátorům argumentů.Searches for the specified public property whose parameters match the specified argument types and modifiers.

public:
 System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, Type ^ returnType, cli::array <Type ^> ^ types, cli::array <System::Reflection::ParameterModifier> ^ modifiers);
public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, Type ^ returnType, cli::array <Type ^> ^ types, cli::array <System::Reflection::ParameterModifier> ^ modifiers);
public System.Reflection.PropertyInfo? GetProperty (string name, Type? returnType, Type[] types, System.Reflection.ParameterModifier[]? modifiers);
public System.Reflection.PropertyInfo GetProperty (string name, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers);
member this.GetProperty : string * Type * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.PropertyInfo
abstract member GetProperty : string * Type * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.PropertyInfo
override this.GetProperty : string * Type * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.PropertyInfo
Public Function GetProperty (name As String, returnType As Type, types As Type(), modifiers As ParameterModifier()) As PropertyInfo

Parametry

name
String

Řetězec obsahující název veřejné vlastnosti, která má být získána.The string containing the name of the public property to get.

returnType
Type

Návratový typ vlastnosti.The return type of the property.

types
Type[]

Pole Type objektů představujících počet, pořadí a typ parametrů pro indexovanou vlastnost, která má být získána.An array of Type objects representing the number, order, and type of the parameters for the indexed property to get.

-nebo--or- Prázdné pole typu Type (to znamená typ [] typy = nový typ [0]) pro získání vlastnosti, která není indexována.An empty array of the type Type (that is, Type[] types = new Type[0]) to get a property that is not indexed.

modifiers
ParameterModifier[]

Pole ParameterModifier objektů reprezentující atributy přidružené k odpovídajícímu prvku v types poli.An array of ParameterModifier objects representing the attributes associated with the corresponding element in the types array. Výchozí vázací objekt tento parametr nezpracovává.The default binder does not process this parameter.

Návraty

PropertyInfo

Objekt představující veřejnou vlastnost, která odpovídá zadaným požadavkům, pokud je nalezena; v opačném případě null .An object representing the public property that matches the specified requirements, if found; otherwise, null.

Implementuje

Výjimky

Našla se více než jedna vlastnost se zadaným názvem a odpovídá zadaným typům a modifikátorům argumentů.More than one property is found with the specified name and matching the specified argument types and modifiers.

name je null.name is null.

-nebo--or- types je null.types is null.

Pole types je multidimenzionální.types is multidimensional.

-nebo--or- Pole modifiers je multidimenzionální.modifiers is multidimensional.

-nebo--or- types a nemají modifiers stejnou délku.types and modifiers do not have the same length.

Prvek types je null .An element of types is null.

Příklady

Následující příklad získá Type objekt odpovídající MyPropertyClass a indexovaná vlastnost této třídy je načtena pomocí argumentů předaných GetProperty metodě.The following example obtains a Type object corresponding to MyPropertyClass, and the indexed property of this class is retrieved using the arguments passed to the GetProperty method.

using namespace System;
using namespace System::Reflection;
public ref class MyPropertyClass
{
private:
   array<int, 2>^ myPropertyArray;

public:

   property int Item [int, int]
   {
      // Declare an indexer.
      int get( int i, int j )
      {
         return myPropertyArray[ i,j ];
      }

      void set( int i, int j, int value )
      {
         myPropertyArray[ i,j ] = value;
      }

   }

};

int main()
{
   try
   {
      Type^ myType = MyPropertyClass::typeid;
      array<Type^>^myTypeArray = gcnew array<Type^>(2);
      
      // Create an instance of the Type array representing the number, order
      // and type of the parameters for the property.
      myTypeArray->SetValue( int::typeid, 0 );
      myTypeArray->SetValue( int::typeid, 1 );
      
      // Search for the indexed property whose parameters match the
      // specified argument types and modifiers.
      PropertyInfo^ myPropertyInfo = myType->GetProperty( "Item", int::typeid, myTypeArray, nullptr );
      Console::WriteLine( "{0}.{1} has a property type of {2}", myType->FullName, myPropertyInfo->Name, myPropertyInfo->PropertyType );
   }
   catch ( Exception^ ex ) 
   {
      Console::WriteLine( "An exception occurred {0}", ex->Message );
   }

}
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);
        }
    }
}
Imports System.Reflection

Public Class MyPropertyClass
    Private myPropertyArray(9, 9) As Integer
    ' Declare an indexer.
    Default Public Property Item(ByVal i As Integer, ByVal j As Integer) As Integer
        Get
            Return myPropertyArray(i, j)
        End Get
        Set(ByVal Value As Integer)
            myPropertyArray(i, j) = Value
        End Set
    End Property
End Class

Public Class MyTypeClass
    Public Shared Sub Main()
        Try
            Dim myType As Type = GetType(MyPropertyClass)
            Dim myTypeArray(1) As Type
            ' Create an instance of a Type array representing the number, order 
            ' and type of the parameters for the property.
            myTypeArray.SetValue(GetType(Integer), 0)
            myTypeArray.SetValue(GetType(Integer), 1)
            ' Search for the indexed property whose parameters match the
            ' specified argument types and modifiers.
            Dim myPropertyInfo As PropertyInfo = myType.GetProperty("Item", _
                  GetType(Integer), myTypeArray, Nothing)
            Console.WriteLine(myType.FullName + "." + myPropertyInfo.Name + _
                  " has a property  type of " + myPropertyInfo.PropertyType.ToString())
        Catch ex As Exception
            Console.WriteLine("An exception occurred " + ex.Message.ToString())
        End Try
    End Sub
End Class

Poznámky

Vlastnost je považována za veřejnou pro reflexi, pokud má alespoň jednu veřejnou přístupovou metodu.A property is considered public to reflection if it has at least one accessor that is public. V opačném případě je vlastnost považována za soukromou a je nutné použít BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (v Visual Basic kombinovat hodnoty pomocí Or ) a získat je.Otherwise the property is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

I když výchozí pořadač nezpracovává ParameterModifier ( modifiers parametr), můžete použít abstraktní System.Reflection.Binder třídu k zápisu vlastního pořadače, který zpracovává proces modifiers .Although the default binder does not process ParameterModifier (the modifiers parameter), you can use the abstract System.Reflection.Binder class to write a custom binder that does process modifiers. ParameterModifier se používá pouze při volání prostřednictvím zprostředkovatele komunikace s objekty COM a jsou zpracovávány pouze parametry, které jsou předány odkazem.ParameterModifier is only used when calling through COM interop, and only parameters that are passed by reference are handled.

Hledání rozlišuje name velká a malá písmena.The search for name is case-sensitive. Hledání zahrnuje vlastnosti veřejných statických instancí a veřejných instancí.The search includes public static and public instance properties.

Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda PropertyInfo s parametry typu nahrazenými odpovídajícími argumenty typu.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

Pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, tato metoda prohledá vlastnosti omezení třídy.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the properties of the class constraint.

Indexery a výchozí vlastnostiIndexers and Default Properties

Visual Basic 2005, Visual C# 2005 a Visual C++ 2005 mají zjednodušenou syntaxi pro přístup k indexovaným vlastnostem a umožňují, aby jedna indexovaná vlastnost byla pro svůj typ výchozí.Visual Basic 2005, Visual C# 2005, and Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. Například pokud proměnná myList odkazuje na ArrayList , syntaxe myList[3] ( myList(3) v Visual Basic) načte element s indexem 3.For example, if the variable myList refers to an ArrayList, the syntax myList[3] (myList(3) in Visual Basic) retrieves the element with the index of 3. Vlastnost můžete přetížit.You can overload the property.

V jazyce C# se tato funkce nazývá indexer a nelze na ni odkazovat pomocí názvu.In C#, this feature is called an indexer and cannot be referred to by name. Ve výchozím nastavení se indexer C# zobrazuje v metadatech jako indexovaná vlastnost s názvem Item.By default, a C# indexer appears in metadata as an indexed property named "Item". Nicméně Vývojář knihovny tříd může použít IndexerNameAttribute atribut ke změně názvu indexeru v metadatech.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. StringTřída má například indexer s názvem Chars[] .For example, the String class has an indexer named Chars[]. Indexované vlastnosti vytvořené pomocí jiných jazyků než C# rovněž mohou mít jiné názvy než Item.Indexed properties created using languages other than C# can have names other than Item, as well.

Chcete-li určit, zda má typ výchozí vlastnost, použijte GetCustomAttributes(Type, Boolean) metodu pro otestování DefaultMemberAttribute atributu.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. Pokud má typ DefaultMemberAttribute MemberName hodnotu, vlastnost vrátí název výchozí vlastnosti.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

Viz také

Platí pro

GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

Vyhledá zadanou vlastnost, jejíž parametry odpovídají zadaným typům a modifikátorům argumentů pomocí zadaných omezení vazby.Searches for the specified property whose parameters match the specified argument types and modifiers, using the specified binding constraints.

public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, Type ^ returnType, cli::array <Type ^> ^ types, cli::array <System::Reflection::ParameterModifier> ^ modifiers);
public System.Reflection.PropertyInfo? GetProperty (string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, Type? returnType, Type[] types, System.Reflection.ParameterModifier[]? modifiers);
public System.Reflection.PropertyInfo GetProperty (string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers);
abstract member GetProperty : string * System.Reflection.BindingFlags * System.Reflection.Binder * Type * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.PropertyInfo
override this.GetProperty : string * System.Reflection.BindingFlags * System.Reflection.Binder * Type * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.PropertyInfo
Public Function GetProperty (name As String, bindingAttr As BindingFlags, binder As Binder, returnType As Type, types As Type(), modifiers As ParameterModifier()) As PropertyInfo

Parametry

name
String

Řetězec obsahující název vlastnosti, která má být získána.The string containing the name of the property to get.

bindingAttr
BindingFlags

Bitová kombinace hodnot výčtu, které určují, jak se provádí hledání.A bitwise combination of the enumeration values that specify how the search is conducted.

-nebo--or- Default pro návrat null .Default to return null.

binder
Binder

Objekt, který definuje sadu vlastností a umožňuje vázání, jež může zahrnovat výběr přetěžované metody, vynucení typů argumentů a vyvolání členu prostřednictvím reflexe.An object that defines a set of properties and enables binding, which can involve selection of an overloaded method, coercion of argument types, and invocation of a member through reflection.

-nebo--or- Odkaz s hodnotou null ( Nothing v Visual Basic) pro použití DefaultBinder .A null reference (Nothing in Visual Basic), to use the DefaultBinder.

returnType
Type

Návratový typ vlastnosti.The return type of the property.

types
Type[]

Pole Type objektů představujících počet, pořadí a typ parametrů pro indexovanou vlastnost, která má být získána.An array of Type objects representing the number, order, and type of the parameters for the indexed property to get.

-nebo--or- Prázdné pole typu Type (to znamená typ [] typy = nový typ [0]) pro získání vlastnosti, která není indexována.An empty array of the type Type (that is, Type[] types = new Type[0]) to get a property that is not indexed.

modifiers
ParameterModifier[]

Pole ParameterModifier objektů reprezentující atributy přidružené k odpovídajícímu prvku v types poli.An array of ParameterModifier objects representing the attributes associated with the corresponding element in the types array. Výchozí vázací objekt tento parametr nezpracovává.The default binder does not process this parameter.

Návraty

PropertyInfo

Objekt představující vlastnost, která odpovídá zadaným požadavkům, pokud byla nalezena; v opačném případě null .An object representing the property that matches the specified requirements, if found; otherwise, null.

Implementuje

Výjimky

Našla se více než jedna vlastnost se zadaným názvem a odpovídá zadaným omezením vazby.More than one property is found with the specified name and matching the specified binding constraints.

name je null.name is null.

-nebo--or- types je null.types is null.

Pole types je multidimenzionální.types is multidimensional.

-nebo--or- Pole modifiers je multidimenzionální.modifiers is multidimensional.

-nebo--or- types a nemají modifiers stejnou délku.types and modifiers do not have the same length.

Prvek types je null .An element of types is null.

Poznámky

Vlastnost je považována za veřejnou pro reflexi, pokud má alespoň jednu veřejnou přístupovou metodu.A property is considered public to reflection if it has at least one accessor that is public. V opačném případě je vlastnost považována za soukromou a je nutné použít BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (v Visual Basic kombinovat hodnoty pomocí Or ) a získat je.Otherwise the property is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

I když výchozí pořadač nezpracovává ParameterModifier ( modifiers parametr), můžete použít abstraktní System.Reflection.Binder třídu k zápisu vlastního pořadače, který zpracovává proces modifiers .Although the default binder does not process ParameterModifier (the modifiers parameter), you can use the abstract System.Reflection.Binder class to write a custom binder that does process modifiers. ParameterModifier se používá pouze při volání prostřednictvím zprostředkovatele komunikace s objekty COM a jsou zpracovávány pouze parametry, které jsou předány odkazem.ParameterModifier is only used when calling through COM interop, and only parameters that are passed by reference are handled.

Následující tabulka ukazuje, jaké členy základní třídy jsou vráceny Get metodami, pokud se odráží na typ.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Typ členuMember Type StaticStatic NestatickýNon-Static
KonstruktorConstructor NoNo NoNo
PoleField NoNo Yes.Yes. Pole je vždy skrýváno podle názvu a podpisu.A field is always hide-by-name-and-signature.
UdálostEvent NeuvedenoNot applicable Pro systém typů platí obecné pravidlo, že dědičnost je stejná jako u metod, které implementují vlastnost.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexe pracuje s třídami jako se skrývanými podle názvu a podpisu.Reflection treats properties as hide-by-name-and-signature. Viz poznámka 2 níže.See note 2 below.
MetodaMethod NoNo Yes.Yes. Metody (virtuální i nevirtuální) mohou být skrývány podle názvu nebo podle názvu a podpisu.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Vnořený typNested Type NoNo NoNo
VlastnostProperty NeuvedenoNot applicable Pro systém typů platí obecné pravidlo, že dědičnost je stejná jako u metod, které implementují vlastnost.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexe pracuje s třídami jako se skrývanými podle názvu a podpisu.Reflection treats properties as hide-by-name-and-signature. Viz poznámka 2 níže.See note 2 below.
  1. Skrývání podle názvu a podpisu bere v úvahu všechny části podpisu včetně vlastních modifikátorů, návratových typů, typů parametrů, sentinelů a nespravovaných konvencí volání.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Jedná se o binární porovnání.This is a binary comparison.

  2. Pro účely reflexe jsou vlastnosti a události skrývány podle názvu a podpisu.For reflection, properties and events are hide-by-name-and-signature. Má-li vlastnost v základní třídě přístupové metody get i set, ale odvozená třída má pouze přístupovou metodu get, vlastnost odvozené třídy skryje vlastnost základní třídy a nebudete mít k dispozici přístup k metodě set základní třídy.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Vlastní atributy nejsou součástí systému společných typů.Custom attributes are not part of the common type system.

Následující BindingFlags příznaky filtru lze použít k definování vlastností, které mají být zahrnuty do hledání:The following BindingFlags filter flags can be used to define which properties to include in the search:

  • BindingFlags.Instance BindingFlags.Static Chcete-li získat návrat, je nutné zadat buď nebo.You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • Určuje, BindingFlags.Public že se mají ve vyhledávání zahrnout veřejné vlastnosti.Specify BindingFlags.Public to include public properties in the search.

  • Určete, BindingFlags.NonPublic že se ve vyhledávání mají zahrnout neveřejné vlastnosti (tj. vlastnosti Private, internal a Protected).Specify BindingFlags.NonPublic to include non-public properties (that is, private, internal, and protected properties) in the search.

  • Určete, BindingFlags.FlattenHierarchy že se mají zahrnout public a protected statické členy v hierarchii. private statické členy v děděných třídách nejsou zahrnuté.Specify BindingFlags.FlattenHierarchy to include public and protected static members up the hierarchy; private static members in inherited classes are not included.

Následující BindingFlags příznaky modifikátoru lze použít ke změně toho, jak hledání funguje:The following BindingFlags modifier flags can be used to change how the search works:

  • BindingFlags.IgnoreCase pro ignorování velkých a malých písmen name .BindingFlags.IgnoreCase to ignore the case of name.

  • BindingFlags.DeclaredOnly Chcete-li hledat pouze vlastnosti deklarované v Type , nikoli vlastnosti, které byly jednoduše děděny.BindingFlags.DeclaredOnly to search only the properties declared on the Type, not properties that were simply inherited.

Další informace naleznete v tématu System.Reflection.BindingFlags.See System.Reflection.BindingFlags for more information.

Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda PropertyInfo s parametry typu nahrazenými odpovídajícími argumenty typu.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

Pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, tato metoda prohledá vlastnosti omezení třídy.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the properties of the class constraint.

Indexery a výchozí vlastnostiIndexers and Default Properties

Visual Basic 2005, Visual C# 2005 a Visual C++ 2005 mají zjednodušenou syntaxi pro přístup k indexovaným vlastnostem a umožňují, aby jedna indexovaná vlastnost byla pro svůj typ výchozí.Visual Basic 2005, Visual C# 2005, and Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. Například pokud proměnná myList odkazuje na ArrayList , syntaxe myList[3] ( myList(3) v Visual Basic) načte element s indexem 3.For example, if the variable myList refers to an ArrayList, the syntax myList[3] (myList(3) in Visual Basic) retrieves the element with the index of 3. Vlastnost můžete přetížit.You can overload the property.

V jazyce C# se tato funkce nazývá indexer a nelze na ni odkazovat pomocí názvu.In C#, this feature is called an indexer and cannot be referred to by name. Ve výchozím nastavení se indexer C# zobrazuje v metadatech jako indexovaná vlastnost s názvem Item.By default, a C# indexer appears in metadata as an indexed property named "Item". Nicméně Vývojář knihovny tříd může použít IndexerNameAttribute atribut ke změně názvu indexeru v metadatech.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. StringTřída má například indexer s názvem Chars[] .For example, the String class has an indexer named Chars[]. Indexované vlastnosti vytvořené pomocí jiných jazyků než C# rovněž mohou mít jiné názvy než Item.Indexed properties created using languages other than C# can have names other than Item, as well.

Chcete-li určit, zda má typ výchozí vlastnost, použijte GetCustomAttributes(Type, Boolean) metodu pro otestování DefaultMemberAttribute atributu.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. Pokud má typ DefaultMemberAttribute MemberName hodnotu, vlastnost vrátí název výchozí vlastnosti.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

Viz také

Platí pro