Type.DefaultBinder Özellik

Tanım

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.

Şunlara uygulanır

Ayrıca bkz.