Mengakses Butiran Kaedah Panggilan Melalui Refleksi
Soalan:
Bolehkah refleksi dalam C# digunakan untuk mendapatkan semula nama dan jenis kaedah yang menggunakan arus kaedah?
Jawapan:
Ya, boleh. Berikut ialah demonstrasi kod tentang cara untuk mencapai ini:
public class SomeClass { public void SomeMethod() { StackFrame frame = new StackFrame(1); MethodBase method = frame.GetMethod(); Type type = method.DeclaringType; string name = method.Name; } }
Pertimbangkan kelas tambahan berikut:
public class Caller { public void Call() { SomeClass s = new SomeClass(); s.SomeMethod(); } }
Dalam senario ini, nama dan jenis pembolehubah akan diberikan dengan nilai " Panggilan" dan "Pemanggil", masing-masing.
Kemas kini untuk .NET 4.5:
Diperkenalkan dalam .NET 4.5, CallerMemberNameAttribute memudahkan proses ini. Dalam SomeClass yang diubah suai di bawah:
public class SomeClass { public void SomeMethod([CallerMemberName]string memberName = "") { Console.WriteLine(memberName); // Outputs the calling method's name } }
Ini menggantikan keperluan untuk kaedah StackFrame dan GetMethod().
Atas ialah kandungan terperinci Bolehkah C# Reflection Mendedahkan Nama dan Jenis Kaedah Panggilan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!