新しい 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 の新機能であるため、提示されたものよりも優れた解決策を期待しています。