Type.DefaultBinder Vlastnost

Definice

Získá odkaz na výchozí pořadač, který implementuje interní pravidla pro výběr příslušných členů, které mají být volány 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

Hodnota vlastnosti

Odkaz na výchozí pořadač používaný systémem.

Příklady

Následující příklad získá výchozí binder z DefaultBinder vlastnosti a vyvolá člen MyClass předáním DefaultBinder hodnoty jako parametru 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

Poznámky

Výchozí pořadač poskytovaný modulem CLR (Common Language Runtime) je použitelný ve všech specializovaných případech. Pokud potřebujete pořadač, který následuje pravidla, která se liší od zadaných výchozích pořadačů, definujte typ odvozený z Binder třídy a předejte instanci tohoto typu pomocí binder parametru jednoho z InvokeMember přetížení.

Reflexe modeluje pravidla přístupnosti společného systému typů. Pokud je například volající ve stejném sestavení, volající nepotřebuje zvláštní oprávnění pro interní členy. Jinak volající potřebuje ReflectionPermission. To je konzistentní s vyhledáváním členů, které jsou chráněné, soukromé atd.

Obecný princip je, že ChangeType by měl provádět pouze rozšiřující převody, které nikdy nepřijdou o data. Příkladem rozšiřujícího převodu je převod hodnoty, která je 32bitové celé číslo podepsané na hodnotu, která je 64bitové celé číslo se signedm. Liší se od zužujícího převodu, který může ztratit data. Příkladem zužujícího převodu je převod 64bitového celého čísla se signedem na 32bitové celé číslo se signedm.

Následující tabulka uvádí převody podporované výchozím pořadačem.

Typ zdroje Typ cíle
Libovolný typ Základní typ.
Libovolný typ Rozhraní, které implementuje.
Char Unt16, UInt32, Int32, UInt64, Int64, Single, Double
Byte Char, Unt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double
SByte Datové typy: Int16, Int32, Int64, Single, Double
UInt16 UInt32 (32bit neznaménkové celé číslo), Int32 (32bit celé číslo), UInt64 (64bit neznaménkové celé číslo), Int64 (64bit celé číslo), Single (jednopřesný typ), Double (dvojpřesný typ)
Int16 Int32, Int64, Single, Double
UInt32 UInt64, Int64, Single, Double
Int32 Int64, Single, Double
UInt64 Jednolůžkový, Dvoulůžkový
Int64 Jednolůžkový, Dvoulůžkový
Single Double
Odkazy na Podle odkazu.

Platí pro

Viz také