Type.DefaultBinder Eigenschaft

Definition

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.

Gilt für:

Weitere Informationen