Memahami Kaedah Panggilan menggunakan Refleksi
Dalam C#, adalah mungkin untuk menggunakan refleksi untuk mendapatkan maklumat tentang kaedah panggilan dan kelas asalnya . Ini membolehkan pembangun mencipta utiliti atau fungsi pengelogan yang memerlukan pengetahuan tentang konteks panggilan.
Mendapatkan Nama dan Kelas Kaedah Panggilan
Untuk mendapatkan nama kaedah panggilan dan kelas yang mengandungi menggunakan refleksi, ikuti langkah berikut:
Buat objek StackFrame yang mewakili bingkai pertama kaedah panggilan, iaitu kaedah semasa:
StackFrame frame = new StackFrame(1);
Dapatkan semula maklumat kaedah daripada StackFrame:
var method = frame.GetMethod();
Ekstrak nama kaedah dan pengisytiharan jenis:
var name = method.Name; var type = method.DeclaringType;
Contoh
Pertimbangkan kelas berikut:
public class SomeClass { public void SomeMethod() { // Get the calling method and type StackFrame frame = new StackFrame(1); var method = frame.GetMethod(); var type = method.DeclaringType; var name = method.Name; } }
Dalam kelas lain:
public class Caller { public void Call() { SomeClass s = new SomeClass(); s.SomeMethod(); } }
Apabila Panggilan dipanggil, nama pembolehubah dan taip dalam SomeClass's SomeMethod akan mengandungi nilai:
Menggunakan CallerMemberNameAttribute dalam .NET 4.5
Dalam .NET 4.5 dan ke atas, terdapat pendekatan yang dipermudahkan menggunakan CallerMemberNameAttribute:
public class SomeClass { public void SomeMethod([CallerMemberName]string memberName = "") { // Output the calling method name Console.WriteLine(memberName); } }
Apabila SomeClass.SomeMethod dipanggil, memberName akan mengandungi nama kaedah panggilan .
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nama dan Kelas Kaedah Panggilan Menggunakan C# Reflection?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!