Type.GetProperty Type.GetProperty Type.GetProperty Type.GetProperty Method

Definition

Ruft eine bestimmte Eigenschaft des aktuellen Type ab.Gets a specific property of the current Type.

Überlädt

GetProperty(String) GetProperty(String) GetProperty(String) GetProperty(String)

Sucht die öffentliche Eigenschaft mit dem angegebenen Namen.Searches for the public property with the specified name.

GetProperty(String, BindingFlags) GetProperty(String, BindingFlags) GetProperty(String, BindingFlags) GetProperty(String, BindingFlags)

Sucht die angegebene Eigenschaft unter Verwendung der angegebenen Bindungseinschränkungen.Searches for the specified property, using the specified binding constraints.

GetProperty(String, Type) GetProperty(String, Type) GetProperty(String, Type) GetProperty(String, Type)

Sucht die öffentliche Eigenschaft mit dem angegebenen Namen und Rückgabetyp.Searches for the public property with the specified name and return type.

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

Sucht die angegebene öffentliche Eigenschaft, deren Parameter den angegebenen Argumenttypen entsprechen.Searches for the specified public property whose parameters match the specified argument types.

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

Sucht die angegebene öffentliche Eigenschaft, deren Parameter den angegebenen Argumenttypen entsprechen.Searches for the specified public property whose parameters match the specified argument types.

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

Sucht die angegebene öffentliche Eigenschaft, deren Parameter den angegebenen Argumenttypen und -modifizierern entsprechen.Searches for the specified public property whose parameters match the specified argument types and modifiers.

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

Sucht anhand der angegebenen Bindungseinschränkungen nach der angegebenen Eigenschaft, deren Parameter den angegebenen Argumenttypen und -modifizierern entsprechen.Searches for the specified property whose parameters match the specified argument types and modifiers, using the specified binding constraints.

GetProperty(String) GetProperty(String) GetProperty(String) GetProperty(String)

Sucht die öffentliche Eigenschaft mit dem angegebenen Namen.Searches for the public property with the specified name.

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

Parameter

name
String String String String

Die Zeichenfolge, die den Namen der abzurufenden öffentlichen Eigenschaft enthält.The string containing the name of the public property to get.

Gibt zurück

Ein Objekt, das die öffentliche Eigenschaft mit dem angegebenen Namen darstellt, sofern gefunden, andernfalls null.An object representing the public property with the specified name, if found; otherwise, null.

Implementiert

Ausnahmen

Es wurden mehrere Eigenschaften mit dem angegebenen Namen gefunden.More than one property is found with the specified name.

Beispiele

Im folgenden Beispiel wird das Type -Objekt einer benutzerdefinierten Klasse abgerufen, eine Eigenschaft dieser Klasse abgerufen und der Eigenschaften Name angezeigt.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 'MyClass1

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 'MyTypeClass 

Intern wird diese Eigenschaft in den Metadaten durch den Namen "Item" bezeichnet.Internally, this property is referred to in the metadata by the name "Item." Bei jedem Versuch, PropertyInfo die Reflektion zu verwenden, muss dieser interne Name angegeben werden, PropertyInfo damit die Eigenschaft ordnungsgemäß zurückgegeben wird.Any attempt to get PropertyInfo using reflection must specify this internal name in order to correctly return the PropertyInfo property.

Hinweise

Beim Suchen nach name wird die Groß-/Kleinschreibung beachtet.The search for name is case-sensitive. Die Suche umfasst öffentliche statische und öffentliche Instanzeigenschaften.The search includes public static and public instance properties.

Eine Eigenschaft gilt als öffentlich für Reflektion, wenn Sie über mindestens einen öffentlichen Accessor verfügt.A property is considered public to reflection if it has at least one accessor that is public. Andernfalls wird die-Eigenschaft als privat betrachtet, und Sie BindingFlags.NonPublic müssen (in Visual Basic die Werte mit | BindingFlags.Instance | BindingFlags.Static Or) verwenden, um Sie zu erhalten.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.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese PropertyInfo Methode den mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Eigenschaften der Klassen Einschränkung.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.

Es treten Beispiels AmbiguousMatchException Weise folgende Situationen auf:Situations in which AmbiguousMatchException occurs include the following:

  • Ein-Typ enthält zwei indizierte Eigenschaften, die denselben Namen, aber eine unterschiedliche Anzahl von Parametern aufweisen.A type contains two indexed properties that have the same name but different numbers of parameters. Um die Mehrdeutigkeit aufzulösen, verwenden Sie eine über GetProperty Ladung der-Methode, die Parametertypen angibt.To resolve the ambiguity, use an overload of the GetProperty method that specifies parameter types.

  • Ein abgeleiteter Typ deklariert eine Eigenschaft, die eine geerbte Eigenschaft mit demselben Namen verbirgt, new indem der-Shadows Modifizierer (in Visual Basic) verwendet wird.A derived type declares a property that hides an inherited property with the same name, by using the new modifier (Shadows in Visual Basic). Um die Mehrdeutigkeit aufzulösen, verwenden GetProperty(String, BindingFlags) Sie die-Methoden Überladung, und fügen Sie das BindingFlags.DeclaredOnly -Flag hinzu, um die Suche auf nicht geerbte Member einzuschränken.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.

Indexer und StandardeigenschaftenIndexers and Default Properties

Visual Basic 2005Visual Basic 2005, Visual C# 2005Visual C# 2005 undVisual C++ 2005Visual C++ 2005 verfügen über eine vereinfachte Syntax für den Zugriff auf indizierte Eigenschaften und ermöglichen eine indizierte Eigenschaft als Standardwert für den Typ., Visual C# 2005Visual C# 2005, and Visual C++ 2005Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. Wenn die Variable myList beispielsweise auf ein ArrayListverweist, ruft die Syntax myList[3] (myList(3) in Visual Basic) das Element mit dem Index 3 ab.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. Sie können die-Eigenschaft überladen.You can overload the property.

In C#wird dieses Feature als Indexer bezeichnet und kann nicht anhand des Namens bezeichnet werden.In C#, this feature is called an indexer and cannot be referred to by name. Standardmäßig wird ein C# Indexer in den Metadaten als indizierte Eigenschaft mit dem Namen "Item" angezeigt.By default, a C# indexer appears in metadata as an indexed property named "Item". Ein Klassen Bibliotheks Entwickler kann jedoch das IndexerNameAttribute -Attribut verwenden, um den Namen des Indexers in den Metadaten zu ändern.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. Beispielsweise verfügt die String -Klasse über einen Indexer Chars[Int32]mit dem Namen.For example, the String class has an indexer named Chars[Int32]. Indizierte Eigenschaften, die mit anderen C# Sprachen als erstellt wurden, können auch andere Namen als Item aufweisen.Indexed properties created using languages other than C# can have names other than Item, as well.

Verwenden Sie die GetCustomAttributes(Type, Boolean) -Methode, um zu bestimmen, ob ein Typ über eine Standard Eigenschaft DefaultMemberAttribute verfügt, um das Attribut zu testen.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. Wenn der Typ ist DefaultMemberAttribute, gibt MemberName die-Eigenschaft den Namen der Standard Eigenschaft zurück.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

Siehe auch

GetProperty(String, BindingFlags) GetProperty(String, BindingFlags) GetProperty(String, BindingFlags) GetProperty(String, BindingFlags)

Sucht die angegebene Eigenschaft unter Verwendung der angegebenen Bindungseinschränkungen.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);
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

Parameter

name
String String String String

Die Zeichenfolge, die den Namen der abzurufenden Eigenschaft enthält.The string containing the name of the property to get.

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Eine bitweise Kombination der Enumerationswerte, die angeben, wie die Suche durchgeführt wird.A bitwise combination of the enumeration values that specify how the search is conducted.

- oder --or- Default, damit null zurückgegeben wird.Default to return null.

Gibt zurück

Ein Objekt, das die Eigenschaft darstellt, die den angegebenen Anforderungen entspricht, sofern diese gefunden wird. Andernfalls null.An object representing the property that matches the specified requirements, if found; otherwise, null.

Implementiert

Ausnahmen

Es wurden mehrere Eigenschaften gefunden, die den angegebenen Namen aufweisen und den angegebenen Bindungseinschränkungen entsprechen.More than one property is found with the specified name and matching the specified binding constraints.

Beispiele

Das folgende Beispiel ruft den Typ einer benutzerdefinierten Klasse ab, ruft eine Eigenschaft dieser Klasse ab und zeigt den Eigenschaftsnamen in Übereinstimmung mit den angegebenen Bindungs Einschränkungen an.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 'MyClass1
End Module 'Module1

Hinweise

Eine Eigenschaft gilt als öffentlich für Reflektion, wenn Sie über mindestens einen öffentlichen Accessor verfügt.A property is considered public to reflection if it has at least one accessor that is public. Andernfalls wird die-Eigenschaft als privat betrachtet, und Sie BindingFlags.NonPublic müssen (in Visual Basic die Werte mit | BindingFlags.Instance | BindingFlags.Static Or) verwenden, um Sie zu erhalten.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.

Die folgenden BindingFlags Filterflags können verwendet werden, um zu definieren, welche Eigenschaften in die Suche eingeschlossen werden sollen:The following BindingFlags filter flags can be used to define which properties to include in the search:

  • Sie müssen entweder BindingFlags.Instance oder BindingFlags.Static angeben, um eine Rückgabe zu erhalten.You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • Geben BindingFlags.Public Sie an, dass öffentliche Eigenschaften in die Suche eingeschlossen werden sollen.Specify BindingFlags.Public to include public properties in the search.

  • Geben BindingFlags.NonPublic Sie an, dass nicht öffentliche Eigenschaften (d. h. private, interne und geschützte Eigenschaften) in der Suche enthalten sein sollen.Specify BindingFlags.NonPublic to include non-public properties (that is, private, internal, and protected properties) in the search.

  • Legen BindingFlags.FlattenHierarchy protected Siepublic fest, dass und statische Member in der Hierarchie nach oben private statische Member in geerbten Klassen sind nicht eingeschlossen.Specify BindingFlags.FlattenHierarchy to include public and protected static members up the hierarchy; private static members in inherited classes are not included.

Die folgenden BindingFlags Modifiziererflags können verwendet werden, um die Funktionsweise der Suche zu ändern:The following BindingFlags modifier flags can be used to change how the search works:

  • BindingFlags.IgnoreCase, wenn der Fall von nameignoriert werden soll.BindingFlags.IgnoreCase to ignore the case of name.

  • BindingFlags.DeclaredOnlyum nur die Eigenschaften zu durchsuchen, Typedie auf dem deklariert sind, und keine Eigenschaften, die einfach geerbt wurden.BindingFlags.DeclaredOnly to search only the properties declared on the Type, not properties that were simply inherited.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.See System.Reflection.BindingFlags for more information.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese PropertyInfo Methode den mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Eigenschaften der Klassen Einschränkung.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.

Es treten Beispiels AmbiguousMatchException Weise folgende Situationen auf:Situations in which AmbiguousMatchException occurs include the following:

  • Ein-Typ enthält zwei indizierte Eigenschaften, die denselben Namen, aber eine unterschiedliche Anzahl von Parametern aufweisen.A type contains two indexed properties that have the same name but different numbers of parameters. Um die Mehrdeutigkeit aufzulösen, verwenden Sie eine über GetProperty Ladung der-Methode, die Parametertypen angibt.To resolve the ambiguity, use an overload of the GetProperty method that specifies parameter types.

  • Ein abgeleiteter Typ deklariert eine Eigenschaft, die eine geerbte Eigenschaft mit dem gleichen Namen new verbirgt, wobeiShadows der-Modifizierer (in Visual Basic) verwendet wird.A derived type declares a property that hides an inherited property with the same name, using the new modifier (Shadows in Visual Basic). Um die Mehrdeutigkeit aufzulösen, BindingFlags.DeclaredOnly schließen Sie ein, um die Suche auf Member zu beschränken, die nicht vererbt werden.To resolve the ambiguity, include BindingFlags.DeclaredOnly to restrict the search to members that are not inherited.

Indexer und StandardeigenschaftenIndexers and Default Properties

Visual Basic 2005Visual Basic 2005, Visual C# 2005Visual C# 2005 undVisual C++ 2005Visual C++ 2005 verfügen über eine vereinfachte Syntax für den Zugriff auf indizierte Eigenschaften und ermöglichen eine indizierte Eigenschaft als Standardwert für den Typ., Visual C# 2005Visual C# 2005, and Visual C++ 2005Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. Wenn die Variable myList beispielsweise auf ein ArrayListverweist, ruft die Syntax myList[3] (myList(3) in Visual Basic) das Element mit dem Index 3 ab.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. Sie können die-Eigenschaft überladen.You can overload the property.

In C#wird dieses Feature als Indexer bezeichnet und kann nicht anhand des Namens bezeichnet werden.In C#, this feature is called an indexer and cannot be referred to by name. Standardmäßig wird ein C# Indexer in den Metadaten als indizierte Eigenschaft mit dem Namen "Item" angezeigt.By default, a C# indexer appears in metadata as an indexed property named "Item". Ein Klassen Bibliotheks Entwickler kann jedoch das IndexerNameAttribute -Attribut verwenden, um den Namen des Indexers in den Metadaten zu ändern.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. Beispielsweise verfügt die String -Klasse über einen Indexer Chars[Int32]mit dem Namen.For example, the String class has an indexer named Chars[Int32]. Indizierte Eigenschaften, die mit anderen C# Sprachen als erstellt wurden, können auch andere Namen als Item aufweisen.Indexed properties created using languages other than C# can have names other than Item, as well.

Verwenden Sie die GetCustomAttributes(Type, Boolean) -Methode, um zu bestimmen, ob ein Typ über eine Standard Eigenschaft DefaultMemberAttribute verfügt, um das Attribut zu testen.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. Wenn der Typ ist DefaultMemberAttribute, gibt MemberName die-Eigenschaft den Namen der Standard Eigenschaft zurück.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

Siehe auch

GetProperty(String, Type) GetProperty(String, Type) GetProperty(String, Type) GetProperty(String, Type)

Sucht die öffentliche Eigenschaft mit dem angegebenen Namen und Rückgabetyp.Searches for the public property with the specified name and return type.

public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, Type ^ returnType);
public System.Reflection.PropertyInfo GetProperty (string name, Type returnType);
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

Parameter

name
String String String String

Die Zeichenfolge, die den Namen der abzurufenden öffentlichen Eigenschaft enthält.The string containing the name of the public property to get.

returnType
Type Type Type Type

Der Rückgabetyp der Eigenschaft.The return type of the property.

Gibt zurück

Ein Objekt, das die öffentliche Eigenschaft mit dem angegebenen Namen darstellt, sofern gefunden, andernfalls null.An object representing the public property with the specified name, if found; otherwise, null.

Implementiert

Ausnahmen

Es wurden mehrere Eigenschaften mit dem angegebenen Namen gefunden.More than one property is found with the specified name.

name ist null, oder returnType ist null.name is null, or returnType is null.

Beispiele

Im folgenden Beispiel wird eine-Klasse mit einer-Eigenschaft definiert, und der Name und der Typ der Eigenschaft werden abgerufen.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 'MyClass1

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 'TestClass

Hinweise

Eine Eigenschaft gilt als öffentlich für Reflektion, wenn Sie über mindestens einen öffentlichen Accessor verfügt.A property is considered public to reflection if it has at least one accessor that is public. Andernfalls wird die-Eigenschaft als privat betrachtet, und Sie BindingFlags.NonPublic müssen (in Visual Basic die Werte mit | BindingFlags.Instance | BindingFlags.Static Or) verwenden, um Sie zu erhalten.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.

Beim Suchen nach name wird die Groß-/Kleinschreibung beachtet.The search for name is case-sensitive. Die Suche umfasst öffentliche statische und öffentliche Instanzeigenschaften.The search includes public static and public instance properties.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese PropertyInfo Methode den mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Eigenschaften der Klassen Einschränkung.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.

Indexer und StandardeigenschaftenIndexers and Default Properties

Visual Basic 2005Visual Basic 2005, Visual C# 2005Visual C# 2005 undVisual C++ 2005Visual C++ 2005 verfügen über eine vereinfachte Syntax für den Zugriff auf indizierte Eigenschaften und ermöglichen eine indizierte Eigenschaft als Standardwert für den Typ., Visual C# 2005Visual C# 2005, and Visual C++ 2005Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. Wenn die Variable myList beispielsweise auf ein ArrayListverweist, ruft die Syntax myList[3] (myList(3) in Visual Basic) das Element mit dem Index 3 ab.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. Sie können die-Eigenschaft überladen.You can overload the property.

In C#wird dieses Feature als Indexer bezeichnet und kann nicht anhand des Namens bezeichnet werden.In C#, this feature is called an indexer and cannot be referred to by name. Standardmäßig wird ein C# Indexer in den Metadaten als indizierte Eigenschaft mit dem Namen "Item" angezeigt.By default, a C# indexer appears in metadata as an indexed property named "Item". Ein Klassen Bibliotheks Entwickler kann jedoch das IndexerNameAttribute -Attribut verwenden, um den Namen des Indexers in den Metadaten zu ändern.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. Beispielsweise verfügt die String -Klasse über einen Indexer Chars[Int32]mit dem Namen.For example, the String class has an indexer named Chars[Int32]. Indizierte Eigenschaften, die mit anderen C# Sprachen als erstellt wurden, können auch andere Namen als Item aufweisen.Indexed properties created using languages other than C# can have names other than Item, as well.

Verwenden Sie die GetCustomAttributes(Type, Boolean) -Methode, um zu bestimmen, ob ein Typ über eine Standard Eigenschaft DefaultMemberAttribute verfügt, um das Attribut zu testen.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. Wenn der Typ ist DefaultMemberAttribute, gibt MemberName die-Eigenschaft den Namen der Standard Eigenschaft zurück.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

Siehe auch

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

Sucht die angegebene öffentliche Eigenschaft, deren Parameter den angegebenen Argumenttypen entsprechen.Searches for the specified public property whose parameters match the specified argument types.

public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, cli::array <Type ^> ^ types);
public System.Reflection.PropertyInfo GetProperty (string name, Type[] types);
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

Parameter

name
String String String String

Die Zeichenfolge, die den Namen der abzurufenden öffentlichen Eigenschaft enthält.The string containing the name of the public property to get.

types
Type[]

Ein Array von Type -Objekten, die Anzahl, Reihenfolge und Typ der Parameter der abzurufenden indizierten Eigenschaft darstellen.An array of Type objects representing the number, order, and type of the parameters for the indexed property to get.

- oder --or- Ein leeres Array vom Type-Typ, d. h. Type[] types = new Type[0], zum Abrufen einer nicht indizierten Eigenschaft.An empty array of the type Type (that is, Type[] types = new Type[0]) to get a property that is not indexed.

Gibt zurück

Ein Objekt, das die öffentliche Eigenschaft darstellt, deren Parameter den angegebenen Argumenttypen entsprechen, sofern gefunden, andernfalls null.An object representing the public property whose parameters match the specified argument types, if found; otherwise, null.

Implementiert

Ausnahmen

Es wurden mehrere Eigenschaften gefunden, die den angegebenen Namen aufweisen und den angegebenen Argumenttypen entsprechen.More than one property is found with the specified name and matching the specified argument types.

name ist null.name is null.

- oder --or- types ist null.types is null.

types ist mehrdimensional.types is multidimensional.

Ein Element von types ist null.An element of types is null.

Beispiele

Das folgende Beispiel ruft das Type -Objekt einer benutzerdefinierten Klasse ab, ruft die-Eigenschaft dieser Klasse ab und zeigt den Eigenschaftsnamen und den Typ der Eigenschaft an, die von den an über GetPropertygegebenen Argumenten angegeben werden.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 'MyClass1

    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 'MyTypeClass
End Module 'Module1

Hinweise

Eine Eigenschaft gilt als öffentlich für Reflektion, wenn Sie über mindestens einen öffentlichen Accessor verfügt.A property is considered public to reflection if it has at least one accessor that is public. Andernfalls wird die-Eigenschaft als privat betrachtet, und Sie BindingFlags.NonPublic müssen (in Visual Basic die Werte mit | BindingFlags.Instance | BindingFlags.Static Or) verwenden, um Sie zu erhalten.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.

Beim Suchen nach name wird die Groß-/Kleinschreibung beachtet.The search for name is case-sensitive. Die Suche umfasst öffentliche statische und öffentliche Instanzeigenschaften.The search includes public static and public instance properties.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese PropertyInfo Methode den mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Eigenschaften der Klassen Einschränkung.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.

Indexer und StandardeigenschaftenIndexers and Default Properties

Visual Basic 2005Visual Basic 2005, Visual C# 2005Visual C# 2005 undVisual C++ 2005Visual C++ 2005 verfügen über eine vereinfachte Syntax für den Zugriff auf indizierte Eigenschaften und ermöglichen eine indizierte Eigenschaft als Standardwert für den Typ., Visual C# 2005Visual C# 2005, and Visual C++ 2005Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. Wenn die Variable myList beispielsweise auf ein ArrayListverweist, ruft die Syntax myList[3] (myList(3) in Visual Basic) das Element mit dem Index 3 ab.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. Sie können die-Eigenschaft überladen.You can overload the property.

In C#wird dieses Feature als Indexer bezeichnet und kann nicht anhand des Namens bezeichnet werden.In C#, this feature is called an indexer and cannot be referred to by name. Standardmäßig wird ein C# Indexer in den Metadaten als indizierte Eigenschaft mit dem Namen "Item" angezeigt.By default, a C# indexer appears in metadata as an indexed property named "Item". Ein Klassen Bibliotheks Entwickler kann jedoch das IndexerNameAttribute -Attribut verwenden, um den Namen des Indexers in den Metadaten zu ändern.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. Beispielsweise verfügt die String -Klasse über einen Indexer Chars[Int32]mit dem Namen.For example, the String class has an indexer named Chars[Int32]. Indizierte Eigenschaften, die mit anderen C# Sprachen als erstellt wurden, können auch andere Namen als Item aufweisen.Indexed properties created using languages other than C# can have names other than Item, as well.

Verwenden Sie die GetCustomAttributes(Type, Boolean) -Methode, um zu bestimmen, ob ein Typ über eine Standard Eigenschaft DefaultMemberAttribute verfügt, um das Attribut zu testen.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. Wenn der Typ ist DefaultMemberAttribute, gibt MemberName die-Eigenschaft den Namen der Standard Eigenschaft zurück.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

Siehe auch

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

Sucht die angegebene öffentliche Eigenschaft, deren Parameter den angegebenen Argumenttypen entsprechen.Searches for the specified public property whose parameters match the specified argument 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);
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

Parameter

name
String String String String

Die Zeichenfolge, die den Namen der abzurufenden öffentlichen Eigenschaft enthält.The string containing the name of the public property to get.

returnType
Type Type Type Type

Der Rückgabetyp der Eigenschaft.The return type of the property.

types
Type[]

Ein Array von Type -Objekten, die Anzahl, Reihenfolge und Typ der Parameter der abzurufenden indizierten Eigenschaft darstellen.An array of Type objects representing the number, order, and type of the parameters for the indexed property to get.

- oder --or- Ein leeres Array vom Type-Typ, d. h. Type[] types = new Type[0], zum Abrufen einer nicht indizierten Eigenschaft.An empty array of the type Type (that is, Type[] types = new Type[0]) to get a property that is not indexed.

Gibt zurück

Ein Objekt, das die öffentliche Eigenschaft darstellt, deren Parameter den angegebenen Argumenttypen entsprechen, sofern gefunden, andernfalls null.An object representing the public property whose parameters match the specified argument types, if found; otherwise, null.

Implementiert

Ausnahmen

Es wurden mehrere Eigenschaften gefunden, die den angegebenen Namen aufweisen und den angegebenen Argumenttypen entsprechen.More than one property is found with the specified name and matching the specified argument types.

name ist null.name is null.

- oder --or- types ist null.types is null.

types ist mehrdimensional.types is multidimensional.

Ein Element von types ist null.An element of types is null.

Hinweise

Eine Eigenschaft gilt als öffentlich für Reflektion, wenn Sie über mindestens einen öffentlichen Accessor verfügt.A property is considered public to reflection if it has at least one accessor that is public. Andernfalls wird die-Eigenschaft als privat betrachtet, und Sie BindingFlags.NonPublic müssen (in Visual Basic die Werte mit | BindingFlags.Instance | BindingFlags.Static Or) verwenden, um Sie zu erhalten.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.

Beim Suchen nach name wird die Groß-/Kleinschreibung beachtet.The search for name is case-sensitive. Die Suche umfasst öffentliche statische und öffentliche Instanzeigenschaften.The search includes public static and public instance properties.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese PropertyInfo Methode den mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Eigenschaften der Klassen Einschränkung.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.

Indexer und StandardeigenschaftenIndexers and Default Properties

Visual Basic 2005Visual Basic 2005, Visual C# 2005Visual C# 2005 undVisual C++ 2005Visual C++ 2005 verfügen über eine vereinfachte Syntax für den Zugriff auf indizierte Eigenschaften und ermöglichen eine indizierte Eigenschaft als Standardwert für den Typ., Visual C# 2005Visual C# 2005, and Visual C++ 2005Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. Wenn die Variable myList beispielsweise auf ein ArrayListverweist, ruft die Syntax myList[3] (myList(3) in Visual Basic) das Element mit dem Index 3 ab.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. Sie können die-Eigenschaft überladen.You can overload the property.

In C#wird dieses Feature als Indexer bezeichnet und kann nicht anhand des Namens bezeichnet werden.In C#, this feature is called an indexer and cannot be referred to by name. Standardmäßig wird ein C# Indexer in den Metadaten als indizierte Eigenschaft mit dem Namen "Item" angezeigt.By default, a C# indexer appears in metadata as an indexed property named "Item". Ein Klassen Bibliotheks Entwickler kann jedoch das IndexerNameAttribute -Attribut verwenden, um den Namen des Indexers in den Metadaten zu ändern.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. Beispielsweise verfügt die String -Klasse über einen Indexer Chars[Int32]mit dem Namen.For example, the String class has an indexer named Chars[Int32]. Indizierte Eigenschaften, die mit anderen C# Sprachen als erstellt wurden, können auch andere Namen als Item aufweisen.Indexed properties created using languages other than C# can have names other than Item, as well.

Verwenden Sie die GetCustomAttributes(Type, Boolean) -Methode, um zu bestimmen, ob ein Typ über eine Standard Eigenschaft DefaultMemberAttribute verfügt, um das Attribut zu testen.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. Wenn der Typ ist DefaultMemberAttribute, gibt MemberName die-Eigenschaft den Namen der Standard Eigenschaft zurück.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

Siehe auch

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

Sucht die angegebene öffentliche Eigenschaft, deren Parameter den angegebenen Argumenttypen und -modifizierern entsprechen.Searches for the specified public property whose parameters match the specified argument types and 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);
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

Parameter

name
String String String String

Die Zeichenfolge, die den Namen der abzurufenden öffentlichen Eigenschaft enthält.The string containing the name of the public property to get.

returnType
Type Type Type Type

Der Rückgabetyp der Eigenschaft.The return type of the property.

types
Type[]

Ein Array von Type -Objekten, die Anzahl, Reihenfolge und Typ der Parameter der abzurufenden indizierten Eigenschaft darstellen.An array of Type objects representing the number, order, and type of the parameters for the indexed property to get.

- oder --or- Ein leeres Array vom Type-Typ, d. h. Type[] types = new Type[0], zum Abrufen einer nicht indizierten Eigenschaft.An empty array of the type Type (that is, Type[] types = new Type[0]) to get a property that is not indexed.

modifiers
ParameterModifier[]

Ein Array von ParameterModifier-Objekten, die die Attribute darstellen, die dem entsprechenden Element im types-Array zugeordnet sind.An array of ParameterModifier objects representing the attributes associated with the corresponding element in the types array. Der Standardbinder verarbeitet diesen Parameter nicht.The default binder does not process this parameter.

Gibt zurück

Ein Objekt, das die öffentliche Eigenschaft darstellt, die den angegebenen Anforderungen entspricht, sofern gefunden, andernfalls null.An object representing the public property that matches the specified requirements, if found; otherwise, null.

Implementiert

Ausnahmen

Es wurden mehrere Eigenschaften gefunden, die den angegebenen Namen aufweisen und den angegebenen Argumenttypen sowie Modifizierern entsprechen.More than one property is found with the specified name and matching the specified argument types and modifiers.

name ist null.name is null.

- oder --or- types ist null.types is null.

types ist mehrdimensional.types is multidimensional.

- oder --or- modifiers ist mehrdimensional.modifiers is multidimensional.

- oder --or- types und modifiers weisen nicht die gleiche Länge auf.types and modifiers do not have the same length.

Ein Element von types ist null.An element of types is null.

Beispiele

Im folgenden Beispiel wird ein Type -Objekt abgerufen MyPropertyClass, das entspricht, und die indizierte-Eigenschaft dieser Klasse wird mithilfe der Argumente GetProperty abgerufen, die an die-Methode übermittelt werden.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 'MyPropertyClass

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 'MyTypeClass

Hinweise

Eine Eigenschaft gilt als öffentlich für Reflektion, wenn Sie über mindestens einen öffentlichen Accessor verfügt.A property is considered public to reflection if it has at least one accessor that is public. Andernfalls wird die-Eigenschaft als privat betrachtet, und Sie BindingFlags.NonPublic müssen (in Visual Basic die Werte mit | BindingFlags.Instance | BindingFlags.Static Or) verwenden, um Sie zu erhalten.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.

Obwohl der Standard ParameterModifier Binder nicht verarbeitet (der modifiers -Parameter), können Sie die abstrakte System.Reflection.Binder -Klasse verwenden, um einen benutzerdefinierten Binder zu modifiersschreiben, der verarbeitet.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. ParameterModifierwird nur beim Aufrufen über COM-Interop verwendet, und nur Parameter, die als Verweis übermittelt werden, werden behandelt.ParameterModifier is only used when calling through COM interop, and only parameters that are passed by reference are handled.

Beim Suchen nach name wird die Groß-/Kleinschreibung beachtet.The search for name is case-sensitive. Die Suche umfasst öffentliche statische und öffentliche Instanzeigenschaften.The search includes public static and public instance properties.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese PropertyInfo Methode den mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Eigenschaften der Klassen Einschränkung.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.

Indexer und StandardeigenschaftenIndexers and Default Properties

Visual Basic 2005Visual Basic 2005, Visual C# 2005Visual C# 2005 undVisual C++ 2005Visual C++ 2005 verfügen über eine vereinfachte Syntax für den Zugriff auf indizierte Eigenschaften und ermöglichen eine indizierte Eigenschaft als Standardwert für den Typ., Visual C# 2005Visual C# 2005, and Visual C++ 2005Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. Wenn die Variable myList beispielsweise auf ein ArrayListverweist, ruft die Syntax myList[3] (myList(3) in Visual Basic) das Element mit dem Index 3 ab.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. Sie können die-Eigenschaft überladen.You can overload the property.

In C#wird dieses Feature als Indexer bezeichnet und kann nicht anhand des Namens bezeichnet werden.In C#, this feature is called an indexer and cannot be referred to by name. Standardmäßig wird ein C# Indexer in den Metadaten als indizierte Eigenschaft mit dem Namen "Item" angezeigt.By default, a C# indexer appears in metadata as an indexed property named "Item". Ein Klassen Bibliotheks Entwickler kann jedoch das IndexerNameAttribute -Attribut verwenden, um den Namen des Indexers in den Metadaten zu ändern.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. Beispielsweise verfügt die String -Klasse über einen Indexer Chars[Int32]mit dem Namen.For example, the String class has an indexer named Chars[Int32]. Indizierte Eigenschaften, die mit anderen C# Sprachen als erstellt wurden, können auch andere Namen als Item aufweisen.Indexed properties created using languages other than C# can have names other than Item, as well.

Verwenden Sie die GetCustomAttributes(Type, Boolean) -Methode, um zu bestimmen, ob ein Typ über eine Standard Eigenschaft DefaultMemberAttribute verfügt, um das Attribut zu testen.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. Wenn der Typ ist DefaultMemberAttribute, gibt MemberName die-Eigenschaft den Namen der Standard Eigenschaft zurück.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

Siehe auch

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

Sucht anhand der angegebenen Bindungseinschränkungen nach der angegebenen Eigenschaft, deren Parameter den angegebenen Argumenttypen und -modifizierern entsprechen.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);
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

Parameter

name
String String String String

Die Zeichenfolge, die den Namen der abzurufenden Eigenschaft enthält.The string containing the name of the property to get.

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Eine bitweise Kombination der Enumerationswerte, die angeben, wie die Suche durchgeführt wird.A bitwise combination of the enumeration values that specify how the search is conducted.

- oder --or- Default, damit null zurückgegeben wird.Default to return null.

binder
Binder Binder Binder Binder

Ein Objekt, das eine Gruppe von Eigenschaften definiert und eine Bindung ermöglicht. Dazu kann die Auswahl einer überladenen Methode, die Umwandlung von Argumenttypen und der Aufruf eines Members durch Reflektion gehören.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.

- oder --or- Ein Nullverweis (Nothing in Visual Basic), wenn DefaultBinderverwendet werden soll.A null reference (Nothing in Visual Basic), to use the DefaultBinder.

returnType
Type Type Type Type

Der Rückgabetyp der Eigenschaft.The return type of the property.

types
Type[]

Ein Array von Type -Objekten, die Anzahl, Reihenfolge und Typ der Parameter der abzurufenden indizierten Eigenschaft darstellen.An array of Type objects representing the number, order, and type of the parameters for the indexed property to get.

- oder --or- Ein leeres Array vom Type-Typ, d. h. Type[] types = new Type[0], zum Abrufen einer nicht indizierten Eigenschaft.An empty array of the type Type (that is, Type[] types = new Type[0]) to get a property that is not indexed.

modifiers
ParameterModifier[]

Ein Array von ParameterModifier-Objekten, die die Attribute darstellen, die dem entsprechenden Element im types-Array zugeordnet sind.An array of ParameterModifier objects representing the attributes associated with the corresponding element in the types array. Der Standardbinder verarbeitet diesen Parameter nicht.The default binder does not process this parameter.

Gibt zurück

Ein Objekt, das die Eigenschaft darstellt, die den angegebenen Anforderungen entspricht, sofern diese gefunden wird. Andernfalls null.An object representing the property that matches the specified requirements, if found; otherwise, null.

Implementiert

Ausnahmen

Es wurden mehrere Eigenschaften gefunden, die den angegebenen Namen aufweisen und den angegebenen Bindungseinschränkungen entsprechen.More than one property is found with the specified name and matching the specified binding constraints.

name ist null.name is null.

- oder --or- types ist null.types is null.

types ist mehrdimensional.types is multidimensional.

- oder --or- modifiers ist mehrdimensional.modifiers is multidimensional.

- oder --or- types und modifiers weisen nicht die gleiche Länge auf.types and modifiers do not have the same length.

Ein Element von types ist null.An element of types is null.

Hinweise

Eine Eigenschaft gilt als öffentlich für Reflektion, wenn Sie über mindestens einen öffentlichen Accessor verfügt.A property is considered public to reflection if it has at least one accessor that is public. Andernfalls wird die-Eigenschaft als privat betrachtet, und Sie BindingFlags.NonPublic müssen (in Visual Basic die Werte mit | BindingFlags.Instance | BindingFlags.Static Or) verwenden, um Sie zu erhalten.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.

Obwohl der Standard ParameterModifier Binder nicht verarbeitet (der modifiers -Parameter), können Sie die abstrakte System.Reflection.Binder -Klasse verwenden, um einen benutzerdefinierten Binder zu modifiersschreiben, der verarbeitet.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. ParameterModifierwird nur beim Aufrufen über COM-Interop verwendet, und nur Parameter, die als Verweis übermittelt werden, werden behandelt.ParameterModifier is only used when calling through COM interop, and only parameters that are passed by reference are handled.

In der folgenden Tabelle wird gezeigt, welche Member einer Basisklasse von den Get Methoden zurückgegeben werden, wenn ein Typ reflektiert wird.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

MemberartMember Type StatischStatic Nicht statischNon-Static
KonstruktorConstructor NeinNo NeinNo
FeldField NeinNo Ja.Yes. Ein Feld wird immer nach Name und Signatur ausgeblendet.A field is always hide-by-name-and-signature.
eventEvent Nicht zutreffendNot applicable Die allgemeine Typsystem Regel ist, dass die Vererbung mit der der Methoden identisch ist, die die-Eigenschaft implementieren.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Die Reflektion behandelt Eigenschaften als "ausblenden nach Namen" und "Signatur".Reflection treats properties as hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.See note 2 below.
MethodeMethod NeinNo Ja.Yes. Eine Methode (sowohl virtuell als auch nicht virtuell) kann nach Namen oder nach Name und Signatur ausgeblendet werden.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Der Typ "Typ"Nested Type NeinNo NeinNo
EigenschaftProperty Nicht zutreffendNot applicable Die allgemeine Typsystem Regel ist, dass die Vererbung mit der der Methoden identisch ist, die die-Eigenschaft implementieren.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Die Reflektion behandelt Eigenschaften als "ausblenden nach Namen" und "Signatur".Reflection treats properties as hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.See note 2 below.
  1. "Hide-by-Name-and-Signature" berücksichtigt alle Teile der Signatur, einschließlich benutzerdefinierter Modifizierer, Rückgabe Typen, Parametertypen, Sentinels und nicht verwalteter Aufruf Konventionen.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. Dies ist ein binärer Vergleich.This is a binary comparison.

  2. Für Reflektion werden Eigenschaften und Ereignisse nach Name und Signatur ausgeblendet.For reflection, properties and events are hide-by-name-and-signature. Wenn Sie über eine Eigenschaft verfügen, die sowohl einen get-als auch einen Set-Accessor in der Basisklasse aufweist, aber die abgeleitete Klasse nur über einen get-Accessor verfügt, blendet die Eigenschaft der abgeleiteten Klasse die Basisklassen Eigenschaft aus, und Sie können nicht auf den Setter für die Basisklasse zugreifen.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. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.Custom attributes are not part of the common type system.

Die folgenden BindingFlags Filterflags können verwendet werden, um zu definieren, welche Eigenschaften in die Suche eingeschlossen werden sollen:The following BindingFlags filter flags can be used to define which properties to include in the search:

  • Sie müssen entweder BindingFlags.Instance oder BindingFlags.Static angeben, um eine Rückgabe zu erhalten.You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • Geben BindingFlags.Public Sie an, dass öffentliche Eigenschaften in die Suche eingeschlossen werden sollen.Specify BindingFlags.Public to include public properties in the search.

  • Geben BindingFlags.NonPublic Sie an, dass nicht öffentliche Eigenschaften (d. h. private, interne und geschützte Eigenschaften) in der Suche enthalten sein sollen.Specify BindingFlags.NonPublic to include non-public properties (that is, private, internal, and protected properties) in the search.

  • Legen BindingFlags.FlattenHierarchy protected Siepublic fest, dass und statische Member in der Hierarchie nach oben private statische Member in geerbten Klassen sind nicht eingeschlossen.Specify BindingFlags.FlattenHierarchy to include public and protected static members up the hierarchy; private static members in inherited classes are not included.

Die folgenden BindingFlags Modifiziererflags können verwendet werden, um die Funktionsweise der Suche zu ändern:The following BindingFlags modifier flags can be used to change how the search works:

  • BindingFlags.IgnoreCase, wenn der Fall von nameignoriert werden soll.BindingFlags.IgnoreCase to ignore the case of name.

  • BindingFlags.DeclaredOnlyum nur die Eigenschaften zu durchsuchen, Typedie auf dem deklariert sind, und keine Eigenschaften, die einfach geerbt wurden.BindingFlags.DeclaredOnly to search only the properties declared on the Type, not properties that were simply inherited.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.See System.Reflection.BindingFlags for more information.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese PropertyInfo Methode den mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Eigenschaften der Klassen Einschränkung.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.

Indexer und StandardeigenschaftenIndexers and Default Properties

Visual Basic 2005Visual Basic 2005, Visual C# 2005Visual C# 2005 undVisual C++ 2005Visual C++ 2005 verfügen über eine vereinfachte Syntax für den Zugriff auf indizierte Eigenschaften und ermöglichen eine indizierte Eigenschaft als Standardwert für den Typ., Visual C# 2005Visual C# 2005, and Visual C++ 2005Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. Wenn die Variable myList beispielsweise auf ein ArrayListverweist, ruft die Syntax myList[3] (myList(3) in Visual Basic) das Element mit dem Index 3 ab.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. Sie können die-Eigenschaft überladen.You can overload the property.

In C#wird dieses Feature als Indexer bezeichnet und kann nicht anhand des Namens bezeichnet werden.In C#, this feature is called an indexer and cannot be referred to by name. Standardmäßig wird ein C# Indexer in den Metadaten als indizierte Eigenschaft mit dem Namen "Item" angezeigt.By default, a C# indexer appears in metadata as an indexed property named "Item". Ein Klassen Bibliotheks Entwickler kann jedoch das IndexerNameAttribute -Attribut verwenden, um den Namen des Indexers in den Metadaten zu ändern.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. Beispielsweise verfügt die String -Klasse über einen Indexer Chars[Int32]mit dem Namen.For example, the String class has an indexer named Chars[Int32]. Indizierte Eigenschaften, die mit anderen C# Sprachen als erstellt wurden, können auch andere Namen als Item aufweisen.Indexed properties created using languages other than C# can have names other than Item, as well.

Verwenden Sie die GetCustomAttributes(Type, Boolean) -Methode, um zu bestimmen, ob ein Typ über eine Standard Eigenschaft DefaultMemberAttribute verfügt, um das Attribut zu testen.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. Wenn der Typ ist DefaultMemberAttribute, gibt MemberName die-Eigenschaft den Namen der Standard Eigenschaft zurück.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

Siehe auch

Gilt für: