Type.DefaultBinder Tulajdonság

Definíció

Lekéri az alapértelmezett iratgyűjtőre mutató hivatkozást, amely belső szabályokat vezet be a megfelelő tagok InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])kiválasztásához.

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

Tulajdonság értéke

A rendszer által használt alapértelmezett kötőanyagra mutató hivatkozás.

Példák

Az alábbi példa lekéri az alapértelmezett kötőanyagot a DefaultBinder tulajdonságból, és meghívja a MyClass egyik tagját úgy, hogy paraméterként adja át az DefaultBinder értéket a tulajdonságnak 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

Megjegyzések

A közös nyelvi futtatókörnyezethez biztosított alapértelmezett kötőanyag csak a leg specializáltabb körülmények között alkalmazható. Ha olyan iratgyűjtőre van szüksége, amely a megadott alapértelmezett iratgyűjtő szabályaitól eltérő szabályokat követ, adjon meg egy, az Binder osztályból származtatott típust, és adjon át egy ilyen típusú példányt az binderInvokeMember egyik túlterhelés paraméterével.

A reflexió a közös típusú rendszer akadálymentességi szabályait modellozza. Ha például a hívó ugyanabban a szerelvényben van, a hívónak nincs szüksége különleges engedélyekre a belső tagok számára. Ellenkező esetben a hívónak szüksége van ReflectionPermissionrá. Ez összhangban van a védett, privát és így tovább védett tagok keresésével.

Az általános alapelv az, hogy ChangeType csak szélesítő átalakításokat kell végrehajtania, amelyek soha nem veszítik el az adatokat. A szélesítő átalakításra példaként egy 32 bites aláírt egész számot 64 bites aláírt egész számmá alakítunk. Ez megkülönböztethető a szűkülő átalakítástól, amely adatvesztést okozhat. A szűkítésre példa egy 64 bites aláírt egész szám átalakítása 32 bites aláírt egész számmá.

Az alábbi táblázat az alapértelmezett kötőanyag által támogatott konverziókat sorolja fel.

Forrás típusa Céltípus
Bármilyen típus Alaptípusa.
Bármilyen típus Az általa implementálva lévő felület.
Karakter Unt16, UInt32, Int32, UInt64, Int64, Single, Double
Bájt 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, Egyszeres, Kettős
UInt64 Egy- és kétszemélyes
Int64 Egy- és kétszemélyes
Single Double
Nem referencia Hivatkozási alap.

A következőre érvényes:

Lásd még