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í vazbu, která implementuje interní pravidla pro výběr vhodných členů, které má volat 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
Hodnota vlastnosti
Odkaz na výchozí vazač používaný systémem.
Příklady
Následující příklad získá výchozí vazač z vlastnosti a vyvolá člena třídy MyClass předáním hodnoty DefaultBinder
DefaultBinder
jako parametru do třídy 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
Poznámky
Výchozí vazač, který je součástí modulu CLR (Common Language Runtime), se vztahuje na všechny kromě nejvíce specializovaných okolností. Pokud potřebujete vazač, který se řídí pravidly, která se liší od pravidel dodaného výchozího vazače, definujte typ odvozený z třídy a předejte instanci tohoto typu pomocí parametru jednoho Binder binder
z InvokeMember přetížení.
Reflexe modelovat pravidla přístupnosti společného systému typů. Například pokud je 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ým principem je, že by se měly provádět pouze rozšiřující ChangeType převody, které nikdy neztratí data. Příkladem rozšiřujícího převodu je převod hodnoty, která je 32bitové celé číslo se znaménkem, na hodnotu, která je 64bitové celé číslo se znaménkem. To se odlišuje od zužujícího převodu, který může ztratit data. Příkladem zužující převodu je převod 64bitového celého čísla se znaménkem na 32bitové celé číslo se znaménkem.
Následující tabulka uvádí převody podporované výchozím važérem.
Typ zdroje | Typ cíle |
---|---|
Libovolný typ | Jeho 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 | 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 | Single, Double |
Int64 | Single, Double |
Jednoduché | dvojité |
Bez odkazu | Podle odkazu. |