Type.DefaultBinder Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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. |