Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mendapatkan Maklumat Kaedah Panggilan Menggunakan Refleksi dalam C#?

Bagaimanakah Saya Boleh Mendapatkan Maklumat Kaedah Panggilan Menggunakan Refleksi dalam C#?

DDD
Lepaskan: 2025-01-01 10:31:09
asal
992 orang telah melayarinya

How Can I Get Calling Method Information Using Reflection in C#?

Mendapatkan Maklumat Kaedah Panggilan Menggunakan Refleksi

Mendapatkan nama dan jenis kaedah panggilan adalah keperluan biasa dalam pengaturcaraan berasaskan refleksi. Apabila fungsi dilaksanakan, ia boleh berguna untuk menentukan konteks di mana ia digunakan.

Menggunakan Kelas StackFrame

Satu pendekatan melibatkan penggunaan kelas StackFrame. Pembina mengambil integer yang mewakili tahap timbunan untuk diperiksa. Dengan melepasi 1, kami boleh mendapatkan maklumat tentang kaedah panggilan.

public class Caller
{
    public void Call()
    {
        StackFrame frame = new StackFrame(1);
        var method = frame.GetMethod();
        var type = method.DeclaringType;
        var name = method.Name;
    }
}
Salin selepas log masuk

Kod ini akan menetapkan "Panggilan" kepada nama dan "Pemanggil" kepada taip, dengan mengandaikan ia dipanggil daripada kaedah lain.

Menggunakan CallerMemberName Atribut

Dalam .NET 4.5 dan lebih baru, CallerMemberNameAttribute menyediakan penyelesaian yang lebih mudah. Atribut menentukan nama kaedah panggilan sebagai parameter.

public class SomeClass
{
    public void SomeMethod([CallerMemberName]string memberName = "")
    {
        Console.WriteLine(memberName); // Output will be the name of the calling method
    }
}
Salin selepas log masuk

Kod ini secara automatik memberikan nama kaedah panggilan kepada parameter memberName, tanpa memerlukan refleksi tambahan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Maklumat Kaedah Panggilan Menggunakan Refleksi dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan