Type.DefaultBinder Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Verweis auf den Standardordner ab, der interne Regeln zum Auswählen der entsprechenden Member implementiert, die aufgerufen InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])werden sollen.
public:
static property System::Reflection::Binder ^ DefaultBinder { System::Reflection::Binder ^ get(); };
public static System.Reflection.Binder DefaultBinder { get; }
static member DefaultBinder : System.Reflection.Binder
Public Shared ReadOnly Property DefaultBinder As Binder
Eigenschaftswert
Ein Verweis auf den standardordner, der vom System verwendet wird.
Beispiele
The following example gets the default binder from the DefaultBinder property, and invokes a member of MyClass by passing the DefaultBinder value as a parameter to InvokeMember.
using System;
using System.Reflection;
public class MyDefaultBinderSample
{
public static void Main()
{
try
{
Binder defaultBinder = Type.DefaultBinder;
MyClass myClass = new MyClass();
// Invoke the HelloWorld method of MyClass.
myClass.GetType().InvokeMember("HelloWorld", BindingFlags.InvokeMethod,
defaultBinder, myClass, new object [] {});
}
catch(Exception e)
{
Console.WriteLine("Exception :" + e.Message);
}
}
class MyClass
{
public void HelloWorld()
{
Console.WriteLine("Hello World");
}
}
}
open System
open System.Reflection
type MyClass() =
member _.HelloWorld() =
printfn "Hello World"
try
let defaultBinder = Type.DefaultBinder
let myClass = MyClass()
// Invoke the HelloWorld method of MyClass.
myClass.GetType().InvokeMember("HelloWorld", BindingFlags.InvokeMethod, defaultBinder, myClass, [||])
|> ignore
with e ->
printfn $"Exception: {e.Message}"
Imports System.Reflection
Public Class MyDefaultBinderSample
Public Shared Sub Main()
Try
Dim defaultBinder As Binder = Type.DefaultBinder
Dim [myClass] As New [MyClass]()
' Invoke the HelloWorld method of MyClass.
[myClass].GetType().InvokeMember("HelloWorld", BindingFlags.InvokeMethod, defaultBinder, [myClass], New Object() {})
Catch e As Exception
Console.WriteLine("Exception :" + e.Message.ToString())
End Try
End Sub
Class [MyClass]
Public Sub HelloWorld()
Console.WriteLine("Hello World")
End Sub
End Class
End Class
Hinweise
Der Standardordner, der mit der Common Language Runtime bereitgestellt wird, gilt in allen, aber den spezialisiertsten Umständen. Wenn Sie einen Ordner benötigen, der sich von den Regeln des bereitgestellten Standardordners unterscheidet, definieren Sie einen von der Binder Klasse abgeleiteten Typ und übergeben eine Instanz dieses Typs mithilfe des binder Parameters einer der InvokeMember Überladungen.
Spiegelung modelliert die Barrierefreiheitsregeln des allgemeinen Typsystems. Wenn sich der Aufrufer beispielsweise in derselben Assembly befindet, benötigt der Aufrufer keine speziellen Berechtigungen für interne Member. Andernfalls benötigt ReflectionPermissionder Anrufer . Dies entspricht dem Nachschlagen von Mitgliedern, die geschützt, privat usw. sind.
Das allgemeine Prinzip besteht darin, dass ChangeType nur Verbreiterungskonvertierungen durchgeführt werden sollten, die niemals Daten verlieren. Ein Beispiel für eine Erweiterungskonvertierung ist das Konvertieren eines Werts, bei dem es sich um eine 32-Bit-ganzzahl mit Vorzeichen handelt, in einen Wert, der eine 64-Bit-ganzzahl ist. Dies unterscheidet sich von einer schmalen Konvertierung, die möglicherweise Daten verliert. Ein Beispiel für eine Schmalungskonvertierung ist das Konvertieren einer 64-Bit-ganzzahligen Vorzeichen in eine 32-Bit-Ganzzahl.
In der folgenden Tabelle sind die Konvertierungen aufgeführt, die vom Standardordner unterstützt werden.
| Herkunftsart | Zieltyp |
|---|---|
| Beliebiger Typ | Der Basistyp. |
| Beliebiger Typ | Die schnittstelle, die implementiert wird. |
| Char | Unt16, UInt32, Int32, UInt64, Int64, Single, Double |
| Byte | Char, Unt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double |
| SByte | Int16, Int32, Int64, Single, Double |
| UInt16 | UInt32, Int32, UInt64, Int64, Single, Double |
| Int16 | Int32, Int64, Single, Double |
| UInt32 | UInt64, Int64, Single, Double |
| Int32 | Int64, Single, Double |
| UInt64 | Einzelzimmer, Doppelzimmer |
| Int64 | Einzelzimmer, Doppelzimmer |
| Ledig | Double |
| Nichtverweis | NachVerweis. |