c#将方法传递到参数中以进行记录

c#将方法传递到参数中以进行记录,c#,.net,C#,.net,我正在实现简单的日志记录,我想做如下事情 public int SomeMethod(int x) { Log(SomeMethod,"here is a log entry); } 在Log方法中,我想从方法中解析出类名,并将方法名和类名打印到日志文件中 是否可以做一些看起来像上面一样简单的事情或类似的事情?试试反射 var currentMethodName = System.Reflection.MethodBase.GetCurrentMethod().Name; var curr

我正在实现简单的日志记录,我想做如下事情

public int SomeMethod(int x)
{
  Log(SomeMethod,"here is a log entry);
}
在Log方法中,我想从方法中解析出类名,并将方法名和类名打印到日志文件中


是否可以做一些看起来像上面一样简单的事情或类似的事情?

试试反射

var currentMethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
var currentCalssName = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name;
或者,您可以像下面这样实现日志方法

public static void Log<TCallerClass>(string text, [CallerMemberName]string method = "")
{
var callerMethodName = method;
var callerCalssName = typeof(TCallerClass).FullName;
}
用法:
Log(“这是一个日志条目”)

如果您使用的是C#6或更高版本,则可以使用

public int SomeMethod(int x)
{
  Log(nameof(SomeMethod), "here is a log entry");
}

您可以使用委托函数传递实际函数,该函数可以在SomeMethod范围内本地定义,也可以在包含SomeMethod的类或类似类中更广泛地定义。
public int SomeMethod(int x)
{
  Log(nameof(SomeMethod), "here is a log entry");
}