Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

Type.DefaultBinder, propriété

Obtient une référence au binder par défaut, qui implémente les règles internes pour la sélection des membres appropriés appelés par InvokeMember.

Espace de noms :  System
Assembly :  mscorlib (dans mscorlib.dll)
public static Binder DefaultBinder { get; }

Valeur de propriété

Type : System.Reflection.Binder
Référence au binder par défaut utilisé par le système.

Le binder par défaut fourni par le Common Language Runtime est applicable dans tous les cas, hormis les cas plus spécifiques. Si vous avez besoin d'un binder qui applique des règles autres que celles du binder par défaut fourni, définissez un type dérivé de la classe Binder, puis passez une instance de ce type à l'aide du paramètre binder d'une des surcharges InvokeMember.

La réflexion modélise les règles d'accessibilité du système de type commun (CTS, Common Type System). Par exemple, si l'appelant figure dans le même assembly, il n'a alors pas besoin d'autorisations spéciales pour les membres internes. Sinon, l'appelant a besoin de ReflectionPermission. Ceci est cohérent avec la recherche de membres protégés, privés, etc.

Le principe général repose sur le fait que ChangeType ne doit effectuer que des conversions étendues, qui ne perdent jamais de données. La conversion forcée d'une valeur entière signée 32 bits en valeur entière signée 64 bits est un exemple de conversion étendue. Elle se distingue d'une conversion restrictive, qui risque de perdre des données. La conversion forcée d'un entier 64 bits signé en entier 32 bits signé est un exemple de conversion restrictive.

Le tableau suivant répertorie les conversions effectuées par le binder par défaut.

Type de source

Type de cible

Tout type

Son type de base.

Tout type

Interface qu'il implémente.

Char

Unt16, UInt32, Int32, UInt64, Int64, Simple, Double

Byte

Char, Unt16, Int16, UInt32, Int32, UInt64, Int64, Simple, 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

Single, Double

Int64

Single, Double

Single

Double

Sans référence

Par référence.

L'exemple suivant obtient le binder par défaut à partir de la propriété DefaultBinder et appelle un membre de MyClass en passant la valeur DefaultBinder 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");
        }	
    }
}


.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,