Type.DefaultBinder Properti

Definisi

Mendapatkan referensi ke pengikat default, yang menerapkan aturan internal untuk memilih anggota yang sesuai yang akan dipanggil oleh 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

Nilai Properti

Referensi ke pengikat default yang digunakan oleh sistem.

Contoh

Contoh berikut mendapatkan pengikat default dari DefaultBinder properti , dan memanggil anggota MyClass dengan meneruskan DefaultBinder nilai sebagai parameter ke 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

Keterangan

Pengikat default yang disediakan dengan runtime bahasa umum berlaku dalam semua tetapi keadaan yang paling khusus. Jika Anda memerlukan binder yang mengikuti aturan yang berbeda dari binder default yang disediakan, tentukan jenis yang berasal dari Binder kelas dan berikan instans jenis tersebut binder menggunakan parameter salah InvokeMember satu kelebihan beban.

Refleksi memodelkan aturan aksesibilitas dari sistem jenis umum. Misalnya, jika penelepon berada dalam perakitan yang sama, pemanggil tidak memerlukan izin khusus untuk anggota internal. Jika tidak, pemanggil membutuhkan ReflectionPermission. Ini konsisten dengan pencarian anggota yang dilindungi, privat, dan sebagainya.

Prinsip umumnya adalah bahwa ChangeType harus melakukan hanya melebarkan konversi, yang tidak pernah kehilangan data. Contoh konversi yang melebar adalah mengonversi nilai yang merupakan bilangan bulat bertanda tangan 32-bit ke nilai yang merupakan bilangan bulat bertanda 64-bit. Ini dibedakan dari konversi yang menyempit, yang mungkin kehilangan data. Contoh konversi yang dipersempit adalah mengonversi bilangan bulat bertanda tangan 64-bit menjadi bilangan bulat bertanda tangan 32-bit.

Tabel berikut mencantumkan konversi yang didukung oleh pengikat default.

Jenis Sumber Jenis Target
Tipe apa pun Jenis dasarnya.
Tipe apa pun Antarmuka yang diimplementasikannya.
Karakter Unt16, UInt32, Int32, UInt64, Int64, Single, Double
Bita Char, Unt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double
SByte Int16, Int32, Int64, Single, Double
UInt16 Jenis data: UInt32, Int32, UInt64, Int64, Single, Double
Int16 Int32, Int64, Single, Double
UInt32 UInt64, Int64, Tunggal, Ganda
Int32 Int64, Tunggal, Ganda
UInt64 Tunggal, Ganda
Int64 Tunggal, Ganda
Single Double
Non-referensi Berdasarkan referensi.

Berlaku untuk

Lihat juga