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