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

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

Barbara Streisand
發布: 2024-12-29 21:33:10
原創
511 人瀏覽過

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

使用反射理解呼叫方法

在 C# 中,可以使用反射來檢索有關呼叫方法及其原始類別的資訊。這允許開發人員創建需要了解調用上下文的實用程式或日誌記錄功能。

取得呼叫方法名稱和類別

取得呼叫方法的名稱以及使用反射的包含類,請按照以下步驟操作:

  1. 建立一個表示呼叫的第一幀的StackFrame物件method,即當前方法:

    StackFrame frame = new StackFrame(1);
    登入後複製
  2. 從 StackFrame中取得方法資訊:

    var method = frame.GetMethod();
    登入後複製
  3. 擷取方法名稱並宣告類型:

    var name = method.Name;
    var type = method.DeclaringType;
    登入後複製

範例

考慮以下課程:

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;
    }
}
登入後複製

在另一個課程中:

public class Caller
{
    public void Call()
    {
        SomeClass s = new SomeClass();
        s.SomeMethod();
    }
}
登入後複製

呼叫Call 時,變數名稱和型別輸入SomeClass 的SomeMethod 會包含下列值:

  • name: "Call"(呼叫方法名稱)
  • type : "Caller"(聲明類別名稱)

在.NET 4.5 中使用CallerMemberNameAttribute

在.NET 4.5 及更高版本中,有一個使用CallerMemberNameAttribute 的簡化方法:

public class SomeClass
{
    public void SomeMethod([CallerMemberName]string memberName = "")
    {
        // Output the calling method name
        Console.WriteLine(memberName);
    }
}
登入後複製

當呼叫SomeClass.SomeName 將包含呼叫方法的名稱.

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板