Type.DefaultBinder-Eigenschaft
Ruft einen Verweis auf den Standardbinder ab, der interne Regeln für die Auswahl der passenden Member implementiert, die von InvokeMember aufgerufen werden sollen.
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Shared ReadOnly Property DefaultBinder As Binder
'Usage
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
Eigenschaftenwert
Ein Verweis auf den vom System verwendeten Standardbinder.
Hinweise
Der von der Common Language Runtime bereitgestellte Standerdbinder ist außer in sehr speziellen Fällen immer anwendbar. Wenn Sie einen Binder benötigen, der andere als die vom Standardbinder bereitgestellten Regeln verwendet, definieren Sie einen von der Binder-Klasse abgeleiteten Typ und übergeben mit dem binder-Parameter einer der InvokeMember-Überladungen eine Instanz dieses Typs.
Die Reflektion bestimmt die Zugriffsregeln des allgemeinen Typsystems. Wenn sich der Aufrufer z. B. in derselben Assembly befindet, sind keine gesonderten Berechtigungen für interne Member erforderlich. Andernfalls benötigt der Aufrufer ReflectionPermission. Dies entspricht der Suche nach Membern, die geschützt, privat usw. sind.
Im Allgemeinen gilt, dass ChangeType nur Erweiterungsumwandlungen durchführen sollte, da bei diesen niemals Daten verloren gehen. Ein Beispiel für eine Erweiterungsumwandlung ist eine Umwandlung einer 32-Bit-Ganzzahl mit Vorzeichen in eine 64-Bit-Ganzzahl mit Vorzeichen. Im Gegensatz dazu können bei einer Eingrenzungsumwandlung Datenverluste auftreten. Ein Beispiel für eine Eingrenzungsumwandlung ist die Umwandlung einer 64-Bit-Ganzzahl mit Vorzeichen in eine 32-Bit-Ganzzahl mit Vorzeichen.
In der folgenden Tabelle werden die vom Standardbinder unterstützten Umwandlungen aufgelistet.
Quelltyp |
Zieltyp |
---|---|
Beliebiger Typ |
Der entsprechende Basistyp. |
Beliebiger Typ |
Die implementierte Schnittstelle. |
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 |
Ohne Verweis. |
Als Verweis. |
Beispiel
Im folgenden Beispiel wird der Standardbinder aus der DefaultBinder-Eigenschaft abgerufen. Außerdem wird ein Member von MyClass aufgerufen, indem der DefaultBinder-Wert als Parameter an InvokeMember übergeben wird.
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
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0