Type.DefaultBinder Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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. |