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에서 지원