Type.DefaultBinder Właściwość

Definicja

Pobiera odwołanie do domyślnego bindera, który implementuje wewnętrzne reguły wybierania odpowiednich elementów członkowskich do wywoływania przez . 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

Wartość właściwości

Binder

Odwołanie do domyślnego bindera używanego przez system.

Przykłady

Poniższy przykład pobiera domyślny binder z właściwości i wywołuje członka Klasy MyClass, przekazując wartość DefaultBinder jako parametr do klasy DefaultBinder 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

Uwagi

Domyślny binder dostarczany ze środowiskiem uruchomieniowym języka wspólnego ma zastosowanie we wszystkich, oprócz najbardziej wyspecjalizowanych okoliczności. Jeśli potrzebujesz klasy binder, która jest zgodna z regułami, które różnią się od reguł dostarczonego domyślnego klasy binder, zdefiniuj typ pochodzący od klasy i przekaż wystąpienie tego typu przy użyciu parametru jednego z Binder binder InvokeMember przeciążeń.

Odbicie modeluje reguły ułatwień dostępu systemu typu wspólnego. Jeśli na przykład wywołujący znajduje się w tym samym zestawie, nie potrzebuje specjalnych uprawnień dla wewnętrznych elementów członkowskich. W przeciwnym razie wywołujący potrzebuje ReflectionPermission . Jest to zgodne z wyszukiwaniami elementów członkowskich, które są chronione, prywatne i tak dalej.

Ogólna zasada jest taka, że należy wykonywać tylko konwersje ChangeType poszerzaające, które nigdy nie tracą danych. Przykładem konwersji poszerzania jest konwersja wartości, która jest 32-bitową liczbą całkowitą ze podpisem na wartość, która jest 64-bitową liczbą całkowitą ze podpisem. Jest to rozróżnienie od konwersji zawężającą, która może spowodować utratę danych. Przykładem konwersji zawężastej jest konwersja 64-bitowej liczby całkowitej ze podpisem na 32-bitową liczbę całkowitą ze podpisanym podpisem.

W poniższej tabeli wymieniono konwersje obsługiwane przez domyślny binder.

Typ źródła Typ docelowy
Dowolny typ Jej typ podstawowy.
Dowolny typ Interfejs, który 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 Pojedynczy, Podwójny
Int64 Pojedynczy, Podwójny
Pojedynczy Double
Brak odwołania Według.

Dotyczy

Zobacz też