Type.DefaultBinder 속성

정의

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.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

설명

공용 언어 런타임에서 제공 하는 기본 바인더는 대부분의 특수 한 경우를 제외한 모든 환경에서 적용 됩니다.The default binder provided with the common language runtime is applicable in all but the most specialized circumstances. 파생 된 형식 제공 되는 기본 바인더의 다른 다음과 같이 규칙을 정의 하는 바인더를 해야 하는 경우는 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.

리플렉션 공용 형식 시스템의 액세스 가능성 규칙을 모델링합니다.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. 이것이, 보호 되는 멤버 조회를 사용 하 여 일관 된, private 및 등입니다.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. 확대 변환의 예로 64 비트 부호 있는 정수 값을 32 비트 부호 있는 정수 값을 변환 됩니다.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-reference 참조로 전달 합니다.By-reference.

적용 대상

추가 정보