Type.DefaultBinder Type.DefaultBinder Type.DefaultBinder Type.DefaultBinder Property

Определение

Возвращает ссылку на связыватель по умолчанию, который реализует внутренние правила выбора соответствующих членов, вызываемых методом InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).Gets a reference to the default binder, which implements internal rules for selecting the appropriate members to be called by 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

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

Ссылка на связыватель, используемый в системе по умолчанию.A reference to the default binder used by the system.

Примеры

В следующем примере возвращается связыватель по умолчанию из DefaultBinder свойство и вызывает член класса MyClass, передав DefaultBinder значение в качестве параметра InvokeMember.The following example gets the default binder from the DefaultBinder property, and invokes a member of MyClass by passing the DefaultBinder value as a parameter to 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
Imports System.Reflection
Imports Microsoft.VisualBasic

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 'Main

    Class [MyClass]

        Public Sub HelloWorld()
            Console.WriteLine("Hello World")
        End Sub 'HelloWorld
    End Class '[MyClass]
End Class 'MyDefaultBinderSample 

Комментарии

Связыватель по умолчанию, предоставляемый среда подходит для всех, кроме очень специфических ситуаций.The default binder provided with the common language runtime is applicable in all but the most specialized circumstances. Если вам нужна binder, следующим правила, которые отличаются от методов связывателя по умолчанию, определяют тип, производный от Binder класса и передавало экземпляр этого типа с помощью binder параметр одного из InvokeMember перегрузки.If you need a binder that follows rules that differ from those of the supplied default binder, define a type derived from the Binder class and pass an instance of that type using the binder parameter of one of the InvokeMember overloads.

Отражение моделирует правила доступности система общих типов CTS.Reflection models the accessibility rules of the common type system. Например если вызывающий объект находится в той же сборке, вызывающему объекту не требуется специальных разрешений для внутренних членов.For example, if the caller is in the same assembly, the caller does not need special permissions for internal members. В противном случае вызывающий объект должен ReflectionPermission.Otherwise, the caller needs ReflectionPermission. Это согласуется с поиск членов, которые защищены, частных и т. д.This is consistent with lookup of members that are protected, private, and so on.

Общий принцип является то, что ChangeType должен выполнять только расширяющие преобразования, которые никогда не потерять данные.The general principle is that ChangeType should perform only widening conversions, which never lose data. Пример расширяющего преобразования преобразует значение 32-разрядное целое число со знаком длиной 64-разрядное целое число со знаком.An example of a widening conversion is converting a value that is a 32-bit signed integer to a value that is a 64-bit signed integer. Этим оно отличается от сужающее преобразование, которое может произойти потеря данных.This is distinguished from a narrowing conversion, which may lose data. Примером сужающего преобразования преобразование 64-разрядное знаковое целое число 32-битовое целое число со знаком.An example of a narrowing conversion is converting a 64-bit signed integer to a 32-bit signed integer.

В следующей таблице перечислены преобразования, поддерживаемые классом связыватель по умолчанию.The following table lists the conversions supported by the default binder.

Тип источникаSource Type Тип целевого объектаTarget Type
Любой типAny type Его базовый тип.Its base type.
Любой типAny type Интерфейс, который он реализует.The interface it implements.
CharChar Unt16, UInt32, Int32, UInt64, Int64, Single, DoubleUnt16, UInt32, Int32, UInt64, Int64, Single, Double
ByteByte Char, Unt16, Int16, UInt32, Int32, UInt64, Int64, Single, DoubleChar, Unt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double
SByteSByte Int16, Int32, Int64, Single, DoubleInt16, Int32, Int64, Single, Double
UInt16UInt16 UInt32, Int32, UInt64, Int64, Single, DoubleUInt32, Int32, UInt64, Int64, Single, Double
Int16Int16 Int32, Int64, Single, DoubleInt32, Int64, Single, Double
UInt32UInt32 UInt64, Int64, Single, DoubleUInt64, Int64, Single, Double
Int32Int32 Int64, Single, DoubleInt64, Single, Double
UInt64UInt64 Single, DoubleSingle, Double
Int64Int64 Single, DoubleSingle, Double
SingleSingle DoubleDouble
Non-referenceNon-reference По ссылке.By-reference.

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

Дополнительно