Я пытаюсь найти решение для "перерыва в непубличные методы".
Я просто хочу вызвать RuntimeMethodInfo.InternalGetCurrentMethod(...)
, передав свой собственный параметр (так что я могу реализовать GetCallingMethod()
) или напрямую использовать RuntimeMethodInfo.InternatGetCurrentMethod(ref StackCrawlMark.LookForMyCaller)
в моих процедурах ведения журнала. GetCurrentMethod
реализуется как:
[MethodImpl(MethodImplOptions.NoInlining)]
public static MethodBase GetCurrentMethod()
{
StackCrawlMark lookForMyCaller = StackCrawlMark.LookForMyCaller;
return RuntimeMethodInfo.InternalGetCurrentMethod(ref lookForMyCaller);
}
где InternalGetCurrentMethod
объявлено: internal: -).
У меня нет проблем с вызовом метода с использованием отражения, но это испортит стек вызовов, и это единственное, что нужно сохранить, иначе оно победит его цель.
Каковы мои шансы на то, что stacktrace будет близка к оригиналу (по крайней мере, на расстоянии разрешенных StackCrawlMark
s, которые LookForMe
, LookForMyCaller
и LookForMyCallersCaller
. Есть ли какой-то сложный способ достичь что я хочу?