我正在实现简单的日志记录,我想做下面的事情
public int SomeMethod(int x)
{
Log(SomeMethod,"here is a log entry);
}
在Log方法中,我想从方法中解析出类名,并将方法名和类名打印到日志文件中。
是否可以做看起来像上面一样简单或类似的事情?
答案 0 :(得分:-1)
尝试使用反射
var currentMethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
var currentCalssName = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name;
或者您可以像这样实现Log方法
public static void Log<TCallerClass>(string text, [CallerMemberName]string method = "")
{
var callerMethodName = method;
var callerCalssName = typeof(TCallerClass).FullName;
}
用法:Log<YourClass>("here is a log entry");
public static void Log(string text)
{
var stackFrame = new StackFrame(1, true);
var callerMethodName = stackFrame.GetMethod().Name;
var callerCalssName = stackFrame.GetMethod().DeclaringType.Name;
}
用法:Log("here is a log entry");
答案 1 :(得分:-1)
如果您使用的是C#6或更高版本,则可以使用nameof
public int SomeMethod(int x)
{
Log(nameof(SomeMethod), "here is a log entry");
}