Type.DefaultBinder Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar en referens till standardbindningen, som implementerar interna regler för att välja lämpliga medlemmar som ska anropas av 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
Egenskapsvärde
En referens till standardbindningen som används av systemet.
Exempel
I följande exempel hämtas standardbindningen från DefaultBinder egenskapen och en medlem i MyClass anropas genom att värdet skickas DefaultBinder som en parameter till 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
Kommentarer
Standardbindningen som medföljer den vanliga språkkörningen gäller i alla utom de mest specialiserade omständigheterna. Om du behöver en pärm som följer regler som skiljer sig från den angivna standardbindningen definierar du en typ som härletts från Binder klassen och skickar en instans av den typen med parametern binder för en av InvokeMember överlagringarna.
Reflektion modellerar tillgänglighetsreglerna för det gemensamma typsystemet. Om anroparen till exempel är i samma sammansättning behöver anroparen inte särskilda behörigheter för interna medlemmar. Annars behöver ReflectionPermissionanroparen . Detta överensstämmer med uppslag av medlemmar som är skyddade, privata och så vidare.
Den allmänna principen är att ChangeType endast ska utföra bredare konverteringar, som aldrig förlorar data. Ett exempel på en utvidgad konvertering är att konvertera ett värde som är ett 32-bitars signerat heltal till ett värde som är ett 64-bitars signerat heltal. Detta skiljer sig från en begränsad konvertering, som kan förlora data. Ett exempel på en begränsad konvertering är att konvertera ett 64-bitars signerat heltal till ett 32-bitars signerat heltal.
I följande tabell visas de konverteringar som stöds av standardbindningen.
| Källtyp | Måltyp |
|---|---|
| Alla typer | Dess bastyp. |
| Alla typer | Gränssnittet som implementeras. |
| 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, Enkel, Dubbel |
| UInt64 | Enkel, Dubbel |
| Int64 | Enkel, Dubbel |
| Single | Double |
| Ej referens | Efter referens. |