Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Type.GetProperty-Methode: (String, Type, Type[], ParameterModifier[])

 

Veröffentlicht: Oktober 2016

Sucht die angegebene öffentliche Eigenschaft, deren Parameter den angegebenen Argumenttypen und -modifizierern entsprechen.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

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

Parameter

name
Type: System.String

Die Zeichenfolge, die den Namen der abzurufenden öffentlichen Eigenschaft enthält.

returnType
Type: System.Type

Der Rückgabetyp der Eigenschaft.

types
Type: System.Type[]

Ein Array von Type-Objekten, die Anzahl, Reihenfolge und Typ der Parameter der abzurufenden indizierten Eigenschaft darstellen.

- oder -

Ein leeres Array vom Type-Typ, d. h. Type[] types = new Type[0], zum Abrufen einer nicht indizierten Eigenschaft.

modifiers
Type: System.Reflection.ParameterModifier[]

Ein Array von ParameterModifier-Objekten, die die Attribute darstellen, die dem entsprechenden Element im types-Array zugeordnet sind. Der Standardbinder verarbeitet diesen Parameter nicht.

Rückgabewert

Type: System.Reflection.PropertyInfo

Ein Objekt, das die öffentliche Eigenschaft darstellt, die den angegebenen Anforderungen entspricht, sofern gefunden, andernfalls null.

Exception Condition
AmbiguousMatchException

Es wurden mehrere Eigenschaften gefunden, die den angegebenen Namen aufweisen und den angegebenen Argumenttypen sowie Modifizierern entsprechen.

ArgumentNullException

name ist null.

- oder -

types ist null.

ArgumentException

types ist mehrdimensional.

- oder -

modifiers ist mehrdimensional.

- oder -

types und modifiers weisen nicht die gleiche Länge auf.

NullReferenceException

Ein Element von types ist null.

Eine Eigenschaft ist öffentlich sein, um Reflektion betrachtet, wenn sie mindestens eine Zugriffsmethode aufweist, die öffentlich ist. Andernfalls wird die Eigenschaft als privat betrachtet, und Sie müssen BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, kombinieren Sie die Werte mit Or) zum Abrufen.

Obwohl der Standardbinder nicht verarbeitet ParameterModifier (die modifiers Parameter), können Sie die abstrakte System.Reflection.Binder Klasse, um einen benutzerdefinierten Binder zu schreiben, die verarbeitet werden modifiers. ParameterModifierwird nur verwendet werden, wenn der Aufruf über COM-Interop und nur als Verweis übergebenen Parameter behandelt.

Die Suche nach name Groß-/Kleinschreibung beachtet. Die Suche enthält öffentliche statische und öffentlichen Instanzeigenschaften.

Wenn die aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese Methode die PropertyInfo mit Parametern für den durch die entsprechenden Typargumente ersetzt.

Wenn die aktuelle Type stellt einen Typparameter in der Definition einer generischen Typ- oder Methodendefinition, diese Methode sucht die Eigenschaften der Class-Einschränkung.

Visual Basic 2005, Visual C# 2005, und Visual C++ 2005 haben eine vereinfachte Syntax für den Zugriff auf indizierte Eigenschaften und ermöglichen eine indizierte Eigenschaft den Standardwert für seinen Datentyp sein. Beispielsweise, wenn die Variable myList bezieht sich auf eine ArrayList, die Syntax myList[3] (myList(3) in Visual Basic) Ruft das Element mit dem Index von 3. Sie können die Eigenschaft überladen.

In c# ist diese Funktion einen Indexer aufgerufen wird und nicht erteilt wurde, die anhand des Namens. Standardmäßig wird als eine indizierte Eigenschaft mit dem Namen "Item" ein C#-Indexers in den Metadaten angezeigt. Entwickeln einer Klassenbibliothek können jedoch die IndexerNameAttribute Attribut zum Ändern des Namens des Indexers in den Metadaten. Z. B. die String -Klasse verfügt über einen Indexer mit dem Namen Chars. Indizierte Eigenschaften, die mit anderen Sprachen als c# erstellt können auch die Namen als Element haben. 

Um zu bestimmen, ob ein Typ eine Standardeigenschaft vorhanden ist, verwenden die GetCustomAttributes(Type, Boolean) -Methode zur Prüfung auf die DefaultMemberAttribute Attribut. Wenn der Typ besitzt DefaultMemberAttributedie MemberName Eigenschaft gibt den Namen der Standardeigenschaft zurück.

Im folgenden Beispiel wird eine Type -Objekt entsprechende MyPropertyClass, und indizierte Eigenschaft dieser Klasse abgerufen wird, verwenden die Argumente an die GetProperty Methode.

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

.NET Framework
Verfügbar seit 1.1
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Zurück zum Anfang
Anzeigen: