Type.DefaultBinder Vlastnost

Definice

Získá odkaz na výchozí vazbu, která implementuje interní pravidla pro výběr vhodných členů, které má volat 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

Hodnota vlastnosti

Binder

Odkaz na výchozí vazač používaný systémem.

Příklady

Následující příklad získá výchozí vazač z vlastnosti a vyvolá člena třídy MyClass předáním hodnoty DefaultBinder DefaultBinder jako parametru do třídy 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

Poznámky

Výchozí vazač, který je součástí modulu CLR (Common Language Runtime), se vztahuje na všechny kromě nejvíce specializovaných okolností. Pokud potřebujete vazač, který se řídí pravidly, která se liší od pravidel dodaného výchozího vazače, definujte typ odvozený z třídy a předejte instanci tohoto typu pomocí parametru jednoho Binder binder z InvokeMember přetížení.

Reflexe modelovat pravidla přístupnosti společného systému typů. Například pokud je volající ve stejném sestavení, volající nepotřebuje zvláštní oprávnění pro interní členy. Jinak volající potřebuje ReflectionPermission . To je konzistentní s vyhledáváním členů, které jsou chráněné, soukromé atd.

Obecným principem je, že by se měly provádět pouze rozšiřující ChangeType převody, které nikdy neztratí data. Příkladem rozšiřujícího převodu je převod hodnoty, která je 32bitové celé číslo se znaménkem, na hodnotu, která je 64bitové celé číslo se znaménkem. To se odlišuje od zužujícího převodu, který může ztratit data. Příkladem zužující převodu je převod 64bitového celého čísla se znaménkem na 32bitové celé číslo se znaménkem.

Následující tabulka uvádí převody podporované výchozím važérem.

Typ zdroje Typ cíle
Libovolný typ Jeho základní typ.
Libovolný typ Rozhraní, které implementuje.
Char Unt16, UInt32, Int32, UInt64, Int64, Single, Double
Byte Char, Unt16, 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
Jednoduché dvojité
Bez odkazu Podle odkazu.

Platí pro

Viz také