每当我按如下方式调用扩展方法MyLogger.Log
时,我都试图跟踪logger.LogError("message");
是如何被调用的。
class MyLogger : ILogger
{
// others have been removed for the sake of simplicity
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state,
Exception exception, Func<TState, Exception, string> formatter)
{
string str = $"{formatter(state, exception)}";
Console.WriteLine(str);
}
}
class Program
{
static void Main1(string[] args)
{
// others have been removed for simplicity.
// ILogger<Program> logger = ....
logger.LogError("the cpu is overheating");
}
}
我只能追溯到LoggerExtension
类中的以下扩展方法:
public static void Log(this ILogger logger, LogLevel logLevel, string message, params object[] args)
{
logger.Log(logLevel, 0, null, message, args);
}
使用Visual Studio的“ F12”导航到其定义。但是,logger.Log(logLevel, 0, null, message, args);
与MyLogger.Log
签名不匹配,因此必须存在另一个调用MyLogger.Log
的方法。
我看了看github,但令人困惑。那是什么方法?