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
614 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!

sumber:php.cn
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