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
Barbara Streisandasal
2024-12-29 21:33:10554semak imbas

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);
  2. Dapatkan semula maklumat kaedah daripada StackFrame:

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

    var name = method.Name;
    var type = method.DeclaringType;

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;
    }
}

Dalam kelas lain:

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

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);
    }
}

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!

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