Ler em inglês

Compartilhar via


Type.DefaultBinder Propriedade

Definição

Obtém uma referência ao associador padrão, que implementa regras internas para selecionar os membros adequados a serem chamados por InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).

C#
public static System.Reflection.Binder DefaultBinder { get; }

Valor da propriedade

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

Exemplos

O exemplo a seguir obtém o associador padrão da DefaultBinder propriedade e invoca um membro de MyClass passando o DefaultBinder valor como um parâmetro para InvokeMember.

C#
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");
        }	
    }
}

Comentários

O associador padrão fornecido com o Common Language Runtime é aplicável em todas as circunstâncias menos especializadas. Se você precisar de um associador que siga regras que diferem das do associador padrão fornecido, defina um tipo derivado da Binder classe e passe uma instância desse tipo usando o binder parâmetro de uma das InvokeMember sobrecargas.

A reflexão modela as regras de acessibilidade do sistema de tipos comuns. Por exemplo, se o chamador estiver no mesmo assembly, o chamador não precisará de permissões especiais para membros internos. Caso contrário, o chamador precisará ReflectionPermissionde . Isso é consistente com a pesquisa de membros protegidos, privados e assim por diante.

O princípio geral é que ChangeType deve executar apenas conversões de expansão, que nunca perdem dados. Um exemplo de uma conversão de expansão é converter um valor que é um inteiro com sinal de 32 bits em um valor que é um inteiro com sinal de 64 bits. Isso é diferenciado de uma conversão de restrição, que pode perder dados. Um exemplo de conversão de restrição é converter um inteiro com sinal de 64 bits em um inteiro com sinal de 32 bits.

A tabela a seguir lista as conversões compatíveis com o associador padrão.

Tipo de Fonte Tipo de destino
Qualquer tipo Seu tipo base.
Qualquer tipo A interface que ela implementa.
Char Unt16, UInt32, Int32, UInt64, Int64, Single, Double
Byte Char, Unt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double
SByte Int16, Int32, Int64, Single e Double
UInt16 UInt32, Int32, UInt64, Int64, Single e Double
Int16 Int32, Int64, Single e Double
UInt32 UInt64, Int64, Single e Double
Int32 Int64, Single e Double
UInt64 Single e Double
Int64 Single e Double
Single Double
Não referência Por referência.

Aplica-se a

Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Confira também