Type.DefaultBinder Propriété

Définition

Obtient une référence au classeur par défaut, qui implémente des règles internes pour sélectionner les membres appropriés à appeler par 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

Valeur de propriété

Référence au classeur par défaut utilisé par le système.

Exemples

L’exemple suivant obtient le classeur par défaut de la DefaultBinder propriété et appelle un membre de MyClass en passant la DefaultBinder valeur en tant que paramètre à 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

Remarques

Le classeur par défaut fourni avec le Common Language Runtime s’applique dans toutes les circonstances, mais les plus spécialisées. Si vous avez besoin d’un classeur qui suit des règles qui diffèrent de celles du classeur par défaut fourni, définissez un type dérivé de la Binder classe et transmettez une instance de ce type à l’aide du binder paramètre de l’une des InvokeMember surcharges.

La réflexion modélise les règles d’accessibilité du système de type commun. Par exemple, si l’appelant se trouve dans le même assembly, l’appelant n’a pas besoin d’autorisations spéciales pour les membres internes. Sinon, l’appelant a besoin ReflectionPermission. Cela est cohérent avec la recherche des membres protégés, privés, et ainsi de suite.

Le principe général est qu’il ChangeType ne doit effectuer que des conversions étendues, qui ne perdent jamais de données. Un exemple de conversion étendue consiste à convertir une valeur qui est un entier signé 32 bits en une valeur qui est un entier signé 64 bits. Cela se distingue d’une conversion restrictive, qui peut perdre des données. Un exemple de conversion restrictive consiste à convertir un entier signé 64 bits en entier signé 32 bits.

Le tableau suivant répertorie les conversions prises en charge par le classeur par défaut.

Type origine Type de cible
Tout type Son type de base.
Tout type Interface qu’il implémente.
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 Simple, Double
Int64 Simple, Double
Single Double
Non-référence Par référence.

S’applique à

Voir aussi