Type.DefaultBinder Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
tarafından InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])çağrılacak uygun üyeleri seçmek için iç kurallar uygulayan varsayılan bağlayıcıya başvuru alır.
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
Özellik Değeri
Sistem tarafından kullanılan varsayılan bağlayıcıya başvuru.
Örnekler
Aşağıdaki örnek özelliğinden varsayılan bağlayıcıyı DefaultBinder alır ve değerini parametresi olarak geçirerek MyClass üyesini DefaultBinderInvokeMemberçağırır.
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
Açıklamalar
Ortak dil çalışma zamanıyla sağlanan varsayılan bağlayıcı, en özel koşullar dışında tüm durumlarda geçerlidir. Sağlanan varsayılan bağlayıcıdan farklı kuralları izleyen bir bağlayıcıya ihtiyacınız varsa, sınıfından türetilmiş Binder bir tür tanımlayın ve aşırı yüklemelerden birinin binder parametresini kullanarak InvokeMember bu türün bir örneğini geçirin.
Yansıma, ortak tür sisteminin erişilebilirlik kurallarını modeller. Örneğin, çağıran aynı derlemedeyse, çağıranın iç üyeler için özel izinlere ihtiyacı yoktur. Aksi takdirde çağıranın öğesine ihtiyacı vardır ReflectionPermission. Bu, korumalı, özel vb. üyelerin aramasıyla tutarlıdır.
Genel ilke, yalnızca hiçbir zaman veri kaybetmeyen genişletme dönüştürmeleri gerçekleştirmesi gerektiğidir ChangeType . Genişletme dönüştürmesine örnek olarak, 32 bit imzalı tamsayı olan bir değeri 64 bit işaretli bir tamsayıya dönüştürmek örnek olarak verilmiştir. Bu, veri kaybına neden olabilecek bir daraltma dönüştürmesinden ayırt edilir. Daraltma dönüştürmesine örnek olarak 64 bit imzalı tamsayıyı 32 bit imzalı tamsayıya dönüştürebilirsiniz.
Aşağıdaki tabloda varsayılan bağlayıcı tarafından desteklenen dönüştürmeler listelenmektedir.
| Kaynak Türü | Hedef Türü |
|---|---|
| Herhangi bir tür | Temel türü. |
| Herhangi bir tür | Uyguladığı arabirim. |
| Char | Unt16, UInt32, Int32, UInt64, Int64, Single, Double |
| Bayt | Char, Unt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double |
| SByte | Int16, Int32, Int64, Tek, Çift |
| UInt16 | UInt32, Int32, UInt64, Int64, Tek, Çift |
| Int16 | Int32, Int64, Tek, Çift |
| UInt32 | UInt64, Int64, Tek, Çift |
| Int32 | Int64, Tek, Çift |
| UInt64 | Tek, Çift |
| Int64 | Tek, Çift |
| Single | Double |
| Başvuru dışı | Başvuruya göre. |