Type.DefaultBinder Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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. |