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

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

Susan Sarandon
Susan Sarandonasal
2024-12-31 22:48:11218semak imbas

How Can I Get the Name of the Calling Method and its Class in C# Using Reflection?

Mendapatkan Kaedah dan Nama Taip Menggunakan Refleksi

Dalam C#, adalah mungkin untuk mendapatkan nama kaedah yang memanggil kaedah semasa bersama-sama dengan sertakan nama kelas. Begini cara anda boleh mencapai ini menggunakan pantulan C#:

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

Sebagai contoh, pertimbangkan kod berikut:

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

Dalam senario ini, nama ialah "Panggil" dan jenis ialah "Pemanggil".

Nota: Kaedah ini menggunakan StackFrame untuk mengakses kaedah panggilan maklumat.

Kemas kini untuk .NET 4.5 dan Ke Atas

Untuk .NET 4.5 dan yang lebih baru, terdapat pendekatan yang lebih mudah menggunakan CallerMemberNameAttribute. Atribut ini membolehkan anda menentukan parameter kaedah yang secara automatik akan diberikan nama kaedah panggilan. Contohnya:

public class SomeClass
{
    public void SomeMethod([CallerMemberName]string memberName = "")
    {
        Console.WriteLine(memberName); // Output will be the name of the calling method
    }
}

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nama Kaedah Panggilan dan Kelasnya dalam C# Menggunakan 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