首頁 >後端開發 >C++ >C#中如何使用反射來取得呼叫方法的名稱及其類別?

C#中如何使用反射來取得呼叫方法的名稱及其類別?

Susan Sarandon
Susan Sarandon原創
2024-12-31 22:48:11198瀏覽

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

使用反射取得方法和型別名稱

在C# 中,可以取得呼叫目前方法的方法名稱及其名稱包含類別的名稱。以下是使用C# 反射實現此目的的方法:

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

例如,考慮以下程式碼:

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

在此場景中,名稱為“Call”,類型為"Caller ".

注意:此方法使用StackFrame 存取呼叫方法資訊。

.NET 4.5 及更高版本的更新

對於 .NET 4.5 及更高版本,有一種使用 CallerMemberNameAttribute 的更方便的方法。此屬性允許您指定一個方法參數,該參數將自動指派呼叫方法的名稱。例如:

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

以上是C#中如何使用反射來取得呼叫方法的名稱及其類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn