我正在尝试在我的新 WPF 4.5 CompositeWPF (Prism) 项目中实现日志记录功能。这需要我在我的代码中实现 ILoggerFacade。该接口仅实现 1 个方法:Log(string message, Category category, Priority priority)
.
ILoggerFacade
界面:
public interface ILoggerFacade
{
void Log(string message, Category category, Priority priority);
}
我的实现:
public class Log4NetLogger : ILoggerFacade
{
private static readonly ILog m_Logger = LogManager.GetLogger(typeof(ILoggerFacade));
public void Log(string message, Category category, Priority priority)
{
switch (category)
{
case Category.Debug:
m_Logger.Debug(message);
break;
case Category.Warn:
m_Logger.Warn(message);
break;
case Category.Exception:
m_Logger.Error(message);
break;
case Category.Info:
m_Logger.Info(message);
break;
}
}
}
我相信有了新引入的[CallerMemberName]
属性,如果我知道如何做这样的事情,我应该能够将调用者方法名称传递给记录器:
public class Log4NetLogger : ILoggerFacade
{
public void Log(string message, Category category, Priority priority, [CallerMemberName] string callerMethod = "")
{
...
所以我的问题是,如何覆盖Log
第三方(Prism)接口强制执行的方法以包含 1 个额外的可选参数?或者如何使用此属性传递调用方方法名称以便记录它?
我见过其他类似的问题,但 [CallerMemberName] 属性是 .NET 4.5 中的一个新功能,所以我希望有一个比所提供的解决方案更好的解决方案。