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

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

Barbara Streisand
Lepaskan: 2024-12-29 21:33:10
asal
518 orang telah melayarinya

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

Memahami Kaedah Panggilan menggunakan Refleksi

Dalam C#, adalah mungkin untuk menggunakan refleksi untuk mendapatkan maklumat tentang kaedah panggilan dan kelas asalnya . Ini membolehkan pembangun mencipta utiliti atau fungsi pengelogan yang memerlukan pengetahuan tentang konteks panggilan.

Mendapatkan Nama dan Kelas Kaedah Panggilan

Untuk mendapatkan nama kaedah panggilan dan kelas yang mengandungi menggunakan refleksi, ikuti langkah berikut:

  1. Buat objek StackFrame yang mewakili bingkai pertama kaedah panggilan, iaitu kaedah semasa:

    StackFrame frame = new StackFrame(1);
    Salin selepas log masuk
  2. Dapatkan semula maklumat kaedah daripada StackFrame:

    var method = frame.GetMethod();
    Salin selepas log masuk
  3. Ekstrak nama kaedah dan pengisytiharan jenis:

    var name = method.Name;
    var type = method.DeclaringType;
    Salin selepas log masuk

Contoh

Pertimbangkan kelas berikut:

public class SomeClass
{
    public void SomeMethod()
    {
        // Get the calling method and type
        StackFrame frame = new StackFrame(1);
        var method = frame.GetMethod();
        var type = method.DeclaringType;
        var name = method.Name;
    }
}
Salin selepas log masuk

Dalam kelas lain:

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

Apabila Panggilan dipanggil, nama pembolehubah dan taip dalam SomeClass's SomeMethod akan mengandungi nilai:

  • nama: "Panggil" (nama kaedah panggilan)
  • jenis: "Pemanggil" (nama kelas yang mengisytiharkan)

Menggunakan CallerMemberNameAttribute dalam .NET 4.5

Dalam .NET 4.5 dan ke atas, terdapat pendekatan yang dipermudahkan menggunakan CallerMemberNameAttribute:

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

Apabila SomeClass.SomeMethod dipanggil, memberName akan mengandungi nama kaedah panggilan .

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nama dan Kelas Kaedah Panggilan Menggunakan C# Reflection?. 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