開始取得有關呼叫方法的資訊的任務時,您可能會遇到需要了解呼叫方法的名稱和呼叫方法的訊息。包含類別的名稱。 C# 反射可讓您有效地收集這些詳細資訊。
要達成此目的,請設計一個利用 StackFrame 類別的方法。實例化一個StackFrame對象,參數為1,代表呼叫方法。隨後,在堆疊幀上呼叫 GetMethod() 方法以檢索呼叫方法的資訊。 DeclaringType 屬性提供對呼叫方法的包含類別的訪問,Name 屬性產生呼叫方法的名稱。
例如,考慮以下程式碼片段:
public class SomeClass { public void SomeMethod() { StackFrame frame = new StackFrame(1); var method = frame.GetMethod(); var type = method.DeclaringType; var name = method.Name; } }
結合使用使用呼叫方法,此程式碼可以透過類型變數存取其包含類別的名稱,並透過名稱變數存取呼叫方法的名稱。
中.NET 4.5 中,CallerMemberNameAttribute 提供了一種替代的簡化方法。使用它需要向方法引入一個參數並使用 [CallerMemberName] 屬性對其進行註解:
public void SomeMethod([CallerMemberName]string memberName = "")
這裡,memberName 參數將自動填入呼叫方法的名稱。
以上是如何使用C#反射取得呼叫方法名稱和類別名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!