Type.DefaultBinder Propriedade

Definição

Obtém uma referência ao dossier padrão, que implementa regras internas para selecionar os membros apropriados a serem chamados por 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

Valor de Propriedade

Uma referência ao dossier padrão usado pelo sistema.

Exemplos

O exemplo seguinte obtém o binder padrão da DefaultBinder propriedade e invoca um membro do MyClass ao passar o DefaultBinder valor como parâmetro para 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

Observações

O binder padrão fornecido com o runtime da linguagem comum é aplicável em todas as circunstâncias, exceto nas mais especializadas. Se precisar de um binder que siga regras que diferem das do binder padrão fornecido, defina um tipo derivado da Binder classe e passe uma instância desse tipo usando o binder parâmetro de um dos InvokeMember overloads.

A reflexão modela as regras de acessibilidade do sistema de tipos comum. Por exemplo, se o chamador estiver na mesma assembleia, não precisa de permissões especiais para membros internos. Caso contrário, o interlocutor precisa ReflectionPermissionde . Isto é consistente com a pesquisa de membros protegidos, privados, e assim por diante.

O princípio geral é que ChangeType deve realizar apenas conversões de alargamento, que nunca perdem dados. Um exemplo de conversão de alargamento é converter um valor que é um inteiro assinado de 32 bits para um valor que é um inteiro assinado de 64 bits. Isto distingue-se de uma conversão de estreito, que pode perder dados. Um exemplo de conversão de estreitamento é converter um inteiro com sinal de 64 bits num inteiro com sinal de 32 bits.

A tabela seguinte lista as conversões suportadas pelo dossier padrão.

Tipo de fonte Tipo de destino
Qualquer tipo O seu tipo base.
Qualquer tipo A interface que implementa.
Char Unt16, UInt32, Int32, UInt64, Int64, Simples, Duplo
byte Char, Unt16, Int16, UInt32, Int32, UInt64, Int64, Simples, Duplo
SByte Int16, Int32, Int64, Single, Duplo
UInt16 UInt32, Int32, UInt64, Int64, Single, Duplo
Int16 Int32, Int64, Single, Duplo
UInt32 UInt64, Int64, Single, Duplo
Int32 Int64, Single, Duplo
UInt64 Solteiro, Duplo
Int64 Solteiro, Duplo
Single Double
Não-referência Por referência.

Aplica-se a

Ver também