Rumah > pembangunan bahagian belakang > C++ > Bolehkah C# Reflection Mendedahkan Nama dan Jenis Kaedah Panggilan?

Bolehkah C# Reflection Mendedahkan Nama dan Jenis Kaedah Panggilan?

Susan Sarandon
Lepaskan: 2024-12-30 20:45:10
asal
654 orang telah melayarinya

Can C# Reflection Reveal the Calling Method's Name and Type?

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;
    }
}
Salin selepas log masuk

Pertimbangkan kelas tambahan berikut:

public class Caller
{
    public void Call()
    {
        SomeClass s = new SomeClass();
        s.SomeMethod();
    }
}
Salin selepas log masuk

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
    }
}
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan