Можно ли в PostError определить имя вызывающего метода "Eat Pizza"? Думаю, я мог бы передать «EatPizza» в качестве одного из аргументов, но это потребовало бы изменений при каждом изменении имени метода (ненужное обслуживание). Но тогда я даже не смог найти имя метода «EatPizza» в контексте «EatPizza» (используя stacktrace, getframe, getmethod).
public void EatPizza(Pizza p){
if(p==null){ //A arbitrary made up error
Utilities.PostError();
}
else{
p.Slices -= 1;
}
}
...
public void PostError(){
//Basically posting to database the name of the method
//Tried this, didn't work: (new StackTrace(true)).GetFrame(5).GetMethod().Name
//Is it possible to determine the calling method name "Eat Pizza" in this context?
}
Когда я пробую разные значения (от 0 до StackTrace.FrameCount-1) в StackTrace.GetFrame, я получаю следующие значения, когда мне просто нужно «EatPizza»:
.ctor
ThreadStart
Main
_nExecuteAssembly
RunUsersAssemblyDebugInZone
PostError
в блоке catch. - person driis   schedule 14.04.2011