다음을 통해 공유


Type.DefaultBinder 속성

InvokeMember에서 호출하는 적절한 멤버를 선택하기 위해 내부 규칙을 구현하는 기본 바인더에 대한 참조를 가져옵니다.

네임스페이스: System
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
Public Shared ReadOnly Property DefaultBinder As Binder
‘사용 방법
Dim value As Binder

value = Type.DefaultBinder
public static Binder DefaultBinder { get; }
public:
static property Binder^ DefaultBinder {
    Binder^ get ();
}
/** @property */
public static Binder get_DefaultBinder ()
public static function get DefaultBinder () : Binder

속성 값

시스템에서 사용되는 기본 바인더에 대한 참조입니다.

설명

공용 언어 런타임에서 제공되는 기본 바인더는 대부분의 특수화된 환경에서 적용 가능합니다. +제공되는 기본 바인더의 규칙과 다른 규칙을 따르는 바인더가 필요한 경우 Binder 클래스에서 파생된 형식을 정의하고 InvokeMember 오버로드 중 하나의 binder 매개 변수를 사용하여 해당 형식의 인스턴스를 전달합니다.

리플렉션에서는 공용 형식 시스템의 액세스 가능성 규칙을 모델링합니다. 예를 들어, 같은 어셈블리에 있는 호출자는 내부 멤버에 대해 특별한 권한이 필요하지 않습니다. 그렇지 않은 경우에는 호출자에 ReflectionPermission이 있어야 합니다. 이는 protected 멤버, private 멤버 등을 조회할 때도 마찬가지입니다.

일반적인 원칙은 ChangeType에서 데이터 손실이 없는 확대 변환을 수행해야 한다는 것입니다. 확대 변환의 예로는 32비트 부호 있는 정수 값을 64비트 부호 있는 정수 값으로 변환하는 것을 들 수 있습니다. 확대 변환은 데이터가 손실될 수 있는 축소 변환과 구분됩니다. 축소 변환의 예로는 64비트 부호 있는 정수를 32비트 부호 있는 정수로 변환하는 것을 들 수 있습니다.

다음 표에는 기본 바인더에서 지원되는 변환이 나열되어 있습니다.

소스 형식

대상 형식

모든 형식

기본 형식

모든 형식

해당 형식이 구현하는 인터페이스입니다.

Char

UInt16, UInt32, Int32, UInt64, Int64, Single, Double

Byte

Char, UInt16, 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

비참조 형식

참조 형식

예제

다음 예제에서는 DefaultBinder 속성에서 기본 바인더를 가져오고 DefaultBinder 값을 매개 변수로 InvokeMember에 전달하여 MyClass의 멤버를 호출합니다.

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

}
import System.*;
import System.Reflection.*;

public class MyDefaultBinderSample
{
    public static void main(String[] args)
    {
        try {
            Binder defaultBinder = Type.get_DefaultBinder();
            MyClass myClass = new MyClass();
            // Invoke the HelloWorld method of MyClass.
            myClass.GetType().InvokeMember("HelloWorld",
                BindingFlags.InvokeMethod, defaultBinder, myClass,
                new Object[] {});
        }
        catch (System.Exception e) {
            Console.WriteLine("Exception :" + e.get_Message());
        }
    } //main

    static class MyClass
    {
        public void HelloWorld()
        {
            Console.WriteLine("Hello World");
        } //HelloWorld
    } //MyClass
} //MyDefaultBinderSample

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

Type 클래스
Type 멤버
System 네임스페이스
Binder