Type.DefaultBinder Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá odkaz na výchozí pořadač, který implementuje interní pravidla pro výběr příslušných členů, které mají být volány 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
Hodnota vlastnosti
Odkaz na výchozí pořadač používaný systémem.
Příklady
Následující příklad získá výchozí binder z DefaultBinder vlastnosti a vyvolá člen MyClass předáním DefaultBinder hodnoty jako parametru 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
Poznámky
Výchozí pořadač poskytovaný modulem CLR (Common Language Runtime) je použitelný ve všech specializovaných případech. Pokud potřebujete pořadač, který následuje pravidla, která se liší od zadaných výchozích pořadačů, definujte typ odvozený z Binder třídy a předejte instanci tohoto typu pomocí binder parametru jednoho z InvokeMember přetížení.
Reflexe modeluje pravidla přístupnosti společného systému typů. Pokud je například volající ve stejném sestavení, volající nepotřebuje zvláštní oprávnění pro interní členy. Jinak volající potřebuje ReflectionPermission. To je konzistentní s vyhledáváním členů, které jsou chráněné, soukromé atd.
Obecný princip je, že ChangeType by měl provádět pouze rozšiřující převody, které nikdy nepřijdou o data. Příkladem rozšiřujícího převodu je převod hodnoty, která je 32bitové celé číslo podepsané na hodnotu, která je 64bitové celé číslo se signedm. Liší se od zužujícího převodu, který může ztratit data. Příkladem zužujícího převodu je převod 64bitového celého čísla se signedem na 32bitové celé číslo se signedm.
Následující tabulka uvádí převody podporované výchozím pořadačem.
| Typ zdroje | Typ cíle |
|---|---|
| Libovolný typ | Základní typ. |
| Libovolný typ | Rozhraní, které implementuje. |
| Char | Unt16, UInt32, Int32, UInt64, Int64, Single, Double |
| Byte | Char, Unt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double |
| SByte | Datové typy: Int16, Int32, Int64, Single, Double |
| UInt16 | UInt32 (32bit neznaménkové celé číslo), Int32 (32bit celé číslo), UInt64 (64bit neznaménkové celé číslo), Int64 (64bit celé číslo), Single (jednopřesný typ), Double (dvojpřesný typ) |
| Int16 | Int32, Int64, Single, Double |
| UInt32 | UInt64, Int64, Single, Double |
| Int32 | Int64, Single, Double |
| UInt64 | Jednolůžkový, Dvoulůžkový |
| Int64 | Jednolůžkový, Dvoulůžkový |
| Single | Double |
| Odkazy na | Podle odkazu. |