2011-03-30 55 views
3

我目前正在爲我的應用程序寫一個錯誤記錄器,基本上我感興趣的是處理異常時,我調用一個函數CreateLogEntry(...) from我的日誌記錄類。這個想法是,我想CreateLogEntry(...)知道它是從一個方法內調用BadFunction(...)並檢索其參數作爲日誌記錄過程的一部分。現在我已經做了一些家庭作業(我猜測雖然不夠:S),並且我確信我的解決方案在於System.Reflection,並且已經找到了一些關於如何枚舉類中的所有函數的示例( http://www.csharp-examples.net/get-method-names/)。 但是有可能獲得創建該異常的函數的名稱。如何獲取調用方法屬性在C#

EX(我得到了什麼):

public string GetCurrentMode() 
    { 
     string currentMode = ""; 

     try 
     { 
      currentMode = _host.Mode.ToString(); 
     } 
     catch(Exception ex) 
     { 
      Common.MorpheeException me = new Common.MorpheeException(); 

      me.MethodName = "GetCurrentMode"; 
      me.NameSpace = "MorpheeScript"; 
      me.ErrorNumber = 0; 
      me.ErrorDescription = ex.Message; 
      me.StackTrace = ex.StackTrace; 

      throw new FaultException<Common.MorpheeException>(me); 
     } 

     return currentMode; 
    } 

我想擁有什麼:

 public string GetCurrentMode() 
    { 
     string currentMode = ""; 

     try 
     { 
      currentMode = _host.Mode.ToString(); 
     } 
     catch(Exception ex) 
     { 
      Common.MorpheeException me = new Common.MorpheeException(ex); 

      // Here me should know that it is called from GetCurrentMode() and 
      // retrieve the parameters if there are any 
      throw new FaultException<Common.MorpheeException>(me); 
     } 

     return currentMode; 
    } 

非常感謝您的幫助

+0

[C#中的反射:我如何獲得調用方法名稱和類型?](http://stackoverflow.com/questions/3095696/reflection-in-c-how-do-i-get-該呼-方法的名稱和類型) – Oliver 2011-03-30 07:59:53

回答