Type.DefaultBinder Egenskap

Definition

Hämtar en referens till standardbindningen, som implementerar interna regler för att välja lämpliga medlemmar som ska anropas av InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).

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

Egenskapsvärde

En referens till standardbindningen som används av systemet.

Exempel

I följande exempel hämtas standardbindningen från DefaultBinder egenskapen och en medlem i MyClass anropas genom att värdet skickas DefaultBinder som en parameter till 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

Kommentarer

Standardbindningen som medföljer den vanliga språkkörningen gäller i alla utom de mest specialiserade omständigheterna. Om du behöver en pärm som följer regler som skiljer sig från den angivna standardbindningen definierar du en typ som härletts från Binder klassen och skickar en instans av den typen med parametern binder för en av InvokeMember överlagringarna.

Reflektion modellerar tillgänglighetsreglerna för det gemensamma typsystemet. Om anroparen till exempel är i samma sammansättning behöver anroparen inte särskilda behörigheter för interna medlemmar. Annars behöver ReflectionPermissionanroparen . Detta överensstämmer med uppslag av medlemmar som är skyddade, privata och så vidare.

Den allmänna principen är att ChangeType endast ska utföra bredare konverteringar, som aldrig förlorar data. Ett exempel på en utvidgad konvertering är att konvertera ett värde som är ett 32-bitars signerat heltal till ett värde som är ett 64-bitars signerat heltal. Detta skiljer sig från en begränsad konvertering, som kan förlora data. Ett exempel på en begränsad konvertering är att konvertera ett 64-bitars signerat heltal till ett 32-bitars signerat heltal.

I följande tabell visas de konverteringar som stöds av standardbindningen.

Källtyp Måltyp
Alla typer Dess bastyp.
Alla typer Gränssnittet som implementeras.
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, Enkel, Dubbel
UInt64 Enkel, Dubbel
Int64 Enkel, Dubbel
Single Double
Ej referens Efter referens.

Gäller för

Se även