Type.DefaultBinder Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee haalt u een verwijzing op naar de standaard binder, waarmee interne regels worden geïmplementeerd voor het selecteren van de juiste leden die moeten worden aangeroepen door 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; }
static member DefaultBinder : System.Reflection.Binder
Public Shared ReadOnly Property DefaultBinder As Binder
Waarde van eigenschap
Een verwijzing naar de standaardbinding die door het systeem wordt gebruikt.
Voorbeelden
In het volgende voorbeeld wordt de standaard binder opgehaald uit de DefaultBinder eigenschap en wordt een lid van MyClass aangeroepen door de DefaultBinder waarde als parameter door te geven aan InvokeMember.
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");
}
}
}
open System
open System.Reflection
type MyClass() =
member _.HelloWorld() =
printfn "Hello World"
try
let defaultBinder = Type.DefaultBinder
let myClass = MyClass()
// Invoke the HelloWorld method of MyClass.
myClass.GetType().InvokeMember("HelloWorld", BindingFlags.InvokeMethod, defaultBinder, myClass, [||])
|> ignore
with e ->
printfn $"Exception: {e.Message}"
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
Opmerkingen
De standaardbinding die wordt geleverd met de algemene taalruntime, is van toepassing in alle, maar de meest gespecialiseerde omstandigheden. Als u een binder nodig hebt die volgt op regels die verschillen van die van de opgegeven standaardbinding, definieert u een type dat is afgeleid van de Binder klasse en geeft u een exemplaar van dat type door met behulp van de binder parameter van een van de InvokeMember overbelastingen.
Weerspiegelingsmodellen van de toegankelijkheidsregels van het algemene typesysteem. Als de aanroeper zich bijvoorbeeld in dezelfde assembly bevindt, heeft de aanroeper geen speciale machtigingen nodig voor interne leden. Anders heeft de beller het nodig ReflectionPermission. Dit is consistent met het opzoeken van leden die zijn beveiligd, privé, enzovoort.
Het algemene principe is dat ChangeType alleen verbreedingsconversies moeten worden uitgevoerd, waardoor gegevens nooit verloren gaan. Een voorbeeld van een widening-conversie is het converteren van een waarde die een 32-bits ondertekend geheel getal is naar een waarde die een 64-bits ondertekend geheel getal is. Dit wordt onderscheiden van een smalle conversie, waardoor gegevens verloren kunnen gaan. Een voorbeeld van een narrowing-conversie is het converteren van een 64-bits ondertekend geheel getal naar een 32-bits ondertekend geheel getal.
De volgende tabel bevat de conversies die worden ondersteund door de standaardbinding.
| Brontype | Doeltype |
|---|---|
| Alle soorten | Het basistype. |
| Alle soorten | De interface die wordt geïmplementeerd. |
| Char | Unt16, UInt32, Int32, UInt64, Int64, Single, Double |
| Byte | Char, Unt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double |
| SByte | Int16, Int32, Int64, Enkel, Dubbel |
| UInt16 | UInt32, Int32, UInt64, Int64, Single, Double |
| Int16 | Int32, Int64, Enkel, Dubbel |
| UInt32 | UInt64, Int64, Enkel, Dubbel |
| Int32 | Int64, Enkel, Dubbel |
| UInt64 | Enkel, Dubbel |
| Int64 | Enkel, Dubbel |
| Enkel | Double |
| Niet-verwijzing | Ter referentie. |