Obwohl der Standardbinder ParameterModifier (den modifiers-Parameter) nicht verarbeitet, können Sie die abstrakte System.Reflection.Binder-Klasse zum Schreiben eines benutzerdefinierten Binders verwenden, der modifiers verarbeitet. ParameterModifier wird nur in Verbindung mit COM-Interop-Aufrufen verwendet, und es werden nur Parameter verarbeitet, die als Verweis übergeben werden.
Das types-Array und das modifiers-Array haben dieselbe Länge. Ein im types-Array angegebener Parameter kann die folgenden im modifiers-Array definierten Attribute besitzen: pdIn, pdOut, pdLcid, pdRetval, pdOptional und pdHasDefault, die [In], [Out], [lcid], [retval], [optional] und einen Wert darstellen, der angibt, ob der Parameter über einen Standardwert verfügt. Die einem Parameter zugeordneten Attribute werden in den Metadaten gespeichert. Sie verbessern die Interoperabilität.
Wenn keine genaue Übereinstimmung vorhanden ist, versucht der binder, die im types-Array angegebenen Parametertypen zu konvertieren, um eine Übereinstimmung auszuwählen. Wenn der binder keine Übereinstimmung auswählen kann, wird NULL (Nothing in Visual Basic) zurückgegeben.
Über die folgenden BindingFlags-Filterflags kann festgelegt werden, welche Konstruktoren in die Suche einbezogen werden:
-
Es wird nur dann ein Ergebnis zurückgegeben, wenn entweder BindingFlags.Instance oder BindingFlags.Static angegeben wird.
-
Geben Sie BindingFlags.Public an, um öffentliche Konstruktoren in die Suche einzubeziehen.
-
Geben Sie BindingFlags.NonPublic an, um nicht öffentliche Konstruktoren, d. h. private und geschützte Konstruktoren, in die Suche einzubeziehen.
Weitere Informationen finden Sie unter System.Reflection.BindingFlags.
Um den Klasseninitialisierer (.cctor) mit dieser Methode abzurufen, müssen Sie Folgendes angeben: BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). Sie können den Klasseninitialisierer auch mit der TypeInitializer-Eigenschaft abrufen.
Diese Methode gibt NULL (Nothing in Visual Basic) zurück, wenn der angeforderte Konstruktor nicht öffentlich ist und der Aufrufer keine ReflectionPermission zum Reflektieren nicht öffentlicher Methoden außerhalb der aktuellen Assembly besitzt.
In der folgenden Tabelle sind die Member einer Basisklasse aufgeführt, die bei der Reflektion eines Typs von den Get-Methoden zurückgegeben werden.
| Membertyp | Statisch | Nicht statisch |
| Konstruktor | Nein | Nein |
| Feld | Nein | Ja. Felder sind immer nach Namen und Signatur verdeckt. |
| Ereignis | Nicht zutreffend | Im allgemeinen Typsystem ist die Vererbung i. d. R. dieselbe wie die Vererbung der Methoden, die die Eigenschaft implementieren. Die Reflektion behandelt Eigenschaften als nach Namen und Signatur verdeckt. Siehe Hinweis 2 unten. |
| Methode | Nein | Ja. Eine Methode, virtuell oder nicht virtuell, kann nach Namen oder nach Namen und Signatur verdeckt sein. |
| Geschachtelter Typ | Nein | Nein |
| Eigenschaft | Nicht zutreffend | Im allgemeinen Typsystem ist die Vererbung i. d. R. dieselbe wie die Vererbung der Methoden, die die Eigenschaft implementieren. Die Reflektion behandelt Eigenschaften als nach Namen und Signatur verdeckt. Siehe Hinweis 2 unten. |
-
Beim Verdecken nach Namen und Signatur werden alle Teile der Signatur berücksichtigt. Dies schließt benutzerdefinierte Modifizierer, Rückgabetypen, Parametertypen, Sentinels und nicht verwaltete Aufrufkonventionen ein. Dies ist ein binärer Vergleich.
-
Die Reflektion behandelt Eigenschaften und Ereignisse als nach Namen und Signatur verdeckt. Wenn eine Eigenschaft in einer Basisklasse sowohl einen Get-Accessor als auch einen Set-Accessor, in einer abgeleiteten Klasse hingegen nur einen Get-Accessor besitzt, verdeckt die Eigenschaft der abgeleiteten Klasse die Eigenschaft der Basisklasse, und der Set-Accessor der Basisklasse ist nicht mehr zugänglich.
-
Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.
Hinweis |
|---|
| Bei der Suche nach Konstruktoren oder Methoden dürfen keine Parameter ausgelassen werden. Nur beim Aufruf können Parameter ausgelassen werden. |
Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese Methode die ConstructorInfo zurück, wobei die Typparameter durch die entsprechenden Typargumente ersetzt wurden. Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methoden darstellt, gibt diese Methode immer NULL (Nothing in Visual Basic) zurück.