如何在c#中获取调用方法属性

时间:2011-03-30 07:11:33

标签: c# reflection exception-handling

我正在为我的应用程序编写一个错误记录器,基本上我感兴趣的是,在处理异常时,我从我的日志类中调用了一个函数 CreateLogEntry(...)。 我的想法是,我希望 CreateLogEntry(...)知道它是从方法 BadFunction(...)中调用的,并在日志记录中检索其参数过程

现在我已经完成了一些功课(我猜不够:S),我确信我的解决方案在于 System.Reflection ,并且已经找到了一些关于如何枚举所有函数的例子在一个班级(http://www.csharp-examples.net/get-method-names/)内。 但是有可能获得创建该异常的函数的名称。

前(我得到的):

    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;
    }

非常感谢你的帮助

2 个答案:

答案 0 :(得分:1)

MorpheeException构造中你可以find calling method using reflection然后使用它。

答案 1 :(得分:0)