Type.DefaultBinder Eigenschap

Definitie

Hiermee haalt u een verwijzing op naar de standaard binder, waarmee interne regels worden geïmplementeerd voor het selecteren van de juiste leden die moeten worden aangeroepen door 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

Waarde van eigenschap

Een verwijzing naar de standaardbinding die door het systeem wordt gebruikt.

Voorbeelden

In het volgende voorbeeld wordt de standaard binder opgehaald uit de DefaultBinder eigenschap en wordt een lid van MyClass aangeroepen door de DefaultBinder waarde als parameter door te geven aan 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

Opmerkingen

De standaardbinding die wordt geleverd met de algemene taalruntime, is van toepassing in alle, maar de meest gespecialiseerde omstandigheden. Als u een binder nodig hebt die volgt op regels die verschillen van die van de opgegeven standaardbinding, definieert u een type dat is afgeleid van de Binder klasse en geeft u een exemplaar van dat type door met behulp van de binder parameter van een van de InvokeMember overbelastingen.

Weerspiegelingsmodellen van de toegankelijkheidsregels van het algemene typesysteem. Als de aanroeper zich bijvoorbeeld in dezelfde assembly bevindt, heeft de aanroeper geen speciale machtigingen nodig voor interne leden. Anders heeft de beller het nodig ReflectionPermission. Dit is consistent met het opzoeken van leden die zijn beveiligd, privé, enzovoort.

Het algemene principe is dat ChangeType alleen verbreedingsconversies moeten worden uitgevoerd, waardoor gegevens nooit verloren gaan. Een voorbeeld van een widening-conversie is het converteren van een waarde die een 32-bits ondertekend geheel getal is naar een waarde die een 64-bits ondertekend geheel getal is. Dit wordt onderscheiden van een smalle conversie, waardoor gegevens verloren kunnen gaan. Een voorbeeld van een narrowing-conversie is het converteren van een 64-bits ondertekend geheel getal naar een 32-bits ondertekend geheel getal.

De volgende tabel bevat de conversies die worden ondersteund door de standaardbinding.

Brontype Doeltype
Alle soorten Het basistype.
Alle soorten De interface die wordt geïmplementeerd.
Char Unt16, UInt32, Int32, UInt64, Int64, Single, Double
Byte Char, Unt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double
SByte Int16, Int32, Int64, Enkel, Dubbel
UInt16 UInt32, Int32, UInt64, Int64, Single, Double
Int16 Int32, Int64, Enkel, Dubbel
UInt32 UInt64, Int64, Enkel, Dubbel
Int32 Int64, Enkel, Dubbel
UInt64 Enkel, Dubbel
Int64 Enkel, Dubbel
Enkel Double
Niet-verwijzing Ter referentie.

Van toepassing op

Zie ook