Freigeben über


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

Siehe auch

Referenz

Type-Klasse
Type-Member
System-Namespace
Binder