我有一个Log
类,它应该将其客户端的类和方法添加到记录的消息中,如下所示:
[ClientClass.ClientMethod] This is the logged message.
我正在寻找一种安全的方法来从Log
类获取这些值,而不将其作为参数从客户端传递。到目前为止我试过这个:
var stackFrame = new StackFrame(StackFramesToSkip);
var method = stackFrame.GetMethod();
return string.Format("[{0}.{1}] {2}", method.DeclaringType.Name, method.Name, message);
但是,此方法并不总是产生调用方法。特别是在使用多个线程时。
有没有一种安全的方法呢?我没有想法。
谢谢!
答案 0 :(得分:2)
您可以使用System.Reflection.MethodBase.GetCurrentMethod()
获取当前方法的名称并将名称转移到参数,但您说您不想要这些名称。好吧,我知道其他几种方式。
我有一次这样做,我手动添加了电话。我认为一开始会让人望而生畏,但就我而言,情况并非如此糟糕。我有一组非常有限的记录方法(与COM沟通的方法)。