Как получить свойства вызывающего метода в c # - PullRequest
3 голосов
/ 30 марта 2011

В настоящее время я пишу регистратор ошибок для своего приложения, и в основном меня интересует то, что при обработке исключения я вызываю функцию 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 ]

1 голос
/ 30 марта 2011

В конструкторе MorpheeException вы можете найти вызывающий метод, используя отражение , а затем использовать его.

0 голосов
/ 30 марта 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...