C# 从dll记录日志,检索log.put()上方的调用方法名称

C# 从dll记录日志,检索log.put()上方的调用方法名称,c#,dll,C#,Dll,因此,我希望登录一个dll,它将在每次调用log.put时记录一些自动生成的信息。我似乎无法从dll中获取调用方法名,无论使用堆栈跟踪 void main() { log.put(Severity.information, "this is a test"); } //inside dll Log.put(Enum s, string msg = ""){ StackTrace st = new StackTrace(new StackFrame(true))

因此,我希望登录一个dll,它将在每次调用log.put时记录一些自动生成的信息。我似乎无法从dll中获取调用方法名,无论使用堆栈跟踪

void main() {
    log.put(Severity.information, "this is a test");
}



//inside dll

  Log.put(Enum s, string msg = ""){
        StackTrace st = new StackTrace(new StackFrame(true)); //get stacktrace
//returns put as expected
        string caller = st.GetFrame(0).GetMethod().ToString(); 
//returns put not expected, I was expecting main
        string caller2 = st.GetFrame(st.FrameCount - 1).GetMethod().ToString(); 
//throws null reference
        string caller3 = st.GetFrame(1).GetMethod().ToString(); 
}
基本上,我真的不想在所有catch语句中硬编码每个方法名和dateTime调用,我只想调用它并记录它


这可能吗?

@Dzyann将在上面更新,但实际上会抛出一个空引用表达式对不起,我是说新的StackFrame1.GetMethod,可以吗?=>选中此处,您希望通过1,因为您希望在上面有一帧=>正如您在此处看到的,StackFrametrue提供当前级别=>