Type.DefaultBinder Tulajdonság
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Lekéri az alapértelmezett iratgyűjtőre mutató hivatkozást, amely belső szabályokat vezet be a megfelelő tagok InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])kiválasztásához.
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
Tulajdonság értéke
A rendszer által használt alapértelmezett kötőanyagra mutató hivatkozás.
Példák
Az alábbi példa lekéri az alapértelmezett kötőanyagot a DefaultBinder tulajdonságból, és meghívja a MyClass egyik tagját úgy, hogy paraméterként adja át az DefaultBinder értéket a tulajdonságnak 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
Megjegyzések
A közös nyelvi futtatókörnyezethez biztosított alapértelmezett kötőanyag csak a leg specializáltabb körülmények között alkalmazható. Ha olyan iratgyűjtőre van szüksége, amely a megadott alapértelmezett iratgyűjtő szabályaitól eltérő szabályokat követ, adjon meg egy, az Binder osztályból származtatott típust, és adjon át egy ilyen típusú példányt az binderInvokeMember egyik túlterhelés paraméterével.
A reflexió a közös típusú rendszer akadálymentességi szabályait modellozza. Ha például a hívó ugyanabban a szerelvényben van, a hívónak nincs szüksége különleges engedélyekre a belső tagok számára. Ellenkező esetben a hívónak szüksége van ReflectionPermissionrá. Ez összhangban van a védett, privát és így tovább védett tagok keresésével.
Az általános alapelv az, hogy ChangeType csak szélesítő átalakításokat kell végrehajtania, amelyek soha nem veszítik el az adatokat. A szélesítő átalakításra példaként egy 32 bites aláírt egész számot 64 bites aláírt egész számmá alakítunk. Ez megkülönböztethető a szűkülő átalakítástól, amely adatvesztést okozhat. A szűkítésre példa egy 64 bites aláírt egész szám átalakítása 32 bites aláírt egész számmá.
Az alábbi táblázat az alapértelmezett kötőanyag által támogatott konverziókat sorolja fel.
| Forrás típusa | Céltípus |
|---|---|
| Bármilyen típus | Alaptípusa. |
| Bármilyen típus | Az általa implementálva lévő felület. |
| Karakter | Unt16, UInt32, Int32, UInt64, Int64, Single, Double |
| Bájt | 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, Egyszeres, Kettős |
| UInt64 | Egy- és kétszemélyes |
| Int64 | Egy- és kétszemélyes |
| Single | Double |
| Nem referencia | Hivatkozási alap. |