Type.DefaultBinder Свойство

Определение

Возвращает ссылку на связыватель по умолчанию, который реализует внутренние правила выбора соответствующих членов, вызываемых методом 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; }
member this.DefaultBinder : System.Reflection.Binder
Public Shared ReadOnly Property DefaultBinder As Binder

Значение свойства

Binder

Ссылка на связыватель, используемый в системе по умолчанию.

Примеры

В следующем примере возвращается связыватель по умолчанию из DefaultBinder Свойства и вызывается член MyClass путем передачи DefaultBinder значения в качестве параметра в InvokeMember .

using namespace System;
using namespace System::Reflection;
ref class MyClass
{
public:
   void HelloWorld()
   {
      Console::WriteLine( "Hello World" );
   }

};

int main()
{
   try
   {
      Binder^ defaultBinder = Type::DefaultBinder;
      MyClass^ myClass = gcnew MyClass;
      
      // Invoke the HelloWorld method of MyClass.
      myClass->GetType()->InvokeMember( "HelloWorld", BindingFlags::InvokeMethod, defaultBinder, myClass, nullptr );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception : {0}", e->Message );
   }

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

Комментарии

Связыватель по умолчанию, поставляемый со средой CLR, применим только в самых специализированных обстоятельствах. Если вам нужен связыватель, который соответствует правилам, отличающимся от указанных связывателей по умолчанию, определите тип, производный от Binder класса, и передайте экземпляр этого типа, используя binder параметр одной из InvokeMember перегрузок.

Отражение моделирует правила специальных возможностей системы общих типов. Например, если вызывающий объект находится в той же сборке, вызывающему объекту не требуются специальные разрешения для внутренних членов. В противном случае вызывающему объекту требуется ReflectionPermission . Это согласуется с поиском защищенных, закрытых и других элементов.

Основным принципом является то, что ChangeType следует выполнять только расширяющие преобразования, которые никогда не теряют данные. Примером расширяющего преобразования является преобразование значения 32-битового целого числа со знаком в значение, которое является 64-битным целым числом со знаком. Это отличается от сужения преобразования, которое может привести к потере данных. Примером суженного преобразования является преобразование 64-разрядного целого числа со знаком в 32-разрядное целое число со знаком.

В следующей таблице перечислены преобразования, поддерживаемые связывателем по умолчанию.

Тип источника Тип целевого объекта
Любой тип Его базовый тип.
Любой тип Интерфейс, который он реализует.
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 Single, Double
Int64 Single, Double
Single Double
Не является ссылкой По ссылке.

Применяется к

См. также раздел