Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mendapatkan Nama Kaedah Panggilan dan Nama Kelas Menggunakan C# Reflection?

Bagaimanakah Saya Boleh Mendapatkan Nama Kaedah Panggilan dan Nama Kelas Menggunakan C# Reflection?

Barbara Streisand
Barbara Streisandasal
2024-12-31 14:10:16366semak imbas

How Can I Get the Calling Method's Name and Class Name Using C# Reflection?

Mendapatkan Butiran Kaedah Panggilan Menggunakan Refleksi

Apabila memulakan tugas mendapatkan maklumat tentang kaedah panggilan, anda mungkin menghadapi keperluan untuk mempelajari nama kaedah panggilan dan mengandungi nama kelas. C# reflection memperkasakan anda dengan keupayaan untuk mengumpulkan butiran ini dengan berkesan.

Untuk mencapai matlamat ini, cipta kaedah yang menggunakan kelas StackFrame. Buat seketika objek StackFrame dengan parameter 1, mewakili kaedah panggilan. Selepas itu, gunakan kaedah GetMethod() pada bingkai tindanan untuk mendapatkan semula maklumat kaedah panggilan. Sifat DeclaringType menyediakan akses kepada kelas yang mengandungi kaedah panggilan dan sifat Name menghasilkan nama kaedah panggilan.

Sebagai contoh, pertimbangkan coretan kod berikut:

public class SomeClass
{
    public void SomeMethod()
    {
        StackFrame frame = new StackFrame(1);
        var method = frame.GetMethod();
        var type = method.DeclaringType;
        var name = method.Name;
    }
}

Sempena dengan kaedah panggilan, kod ini membolehkan akses kepada nama kelas yang mengandunginya melalui pembolehubah jenis dan kepada nama kaedah panggilan melalui nama pembolehubah.

Dalam .NET 4.5, CallerMemberNameAttribute menyediakan pendekatan alternatif yang dipermudahkan. Menggunakannya memerlukan memperkenalkan parameter kepada kaedah dan menganotasinya dengan atribut [CallerMemberName]:

public void SomeMethod([CallerMemberName]string memberName = "")

Di sini, parameter memberName akan mengisi secara automatik dengan nama kaedah panggilan.

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

Kenyataan:
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