使用反射理解呼叫方法
在 C# 中,可以使用反射來檢索有關呼叫方法及其原始類別的資訊。這允許開發人員創建需要了解調用上下文的實用程式或日誌記錄功能。
取得呼叫方法名稱和類別
取得呼叫方法的名稱以及使用反射的包含類,請按照以下步驟操作:
建立一個表示呼叫的第一幀的StackFrame物件method,即當前方法:
StackFrame frame = new StackFrame(1);
從 StackFrame中取得方法資訊:
var method = frame.GetMethod();
擷取方法名稱並宣告類型:
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 會包含下列值:
在.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中文網其他相關文章!