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
Lepaskan: 2024-12-31 22:48:11
asal
187 orang telah melayarinya

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

Sebagai contoh, pertimbangkan kod berikut:

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

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

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!

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