class LogUtil<T> : ILogUtility
{
log4net.ILog log;
public LogUtil()
{
log = log4net.LogManager.GetLogger(typeof(T).FullName);
}
public void Log(LogType logtype, string message)
{
Console.WriteLine("logging coming from class {0} - message {1} " , typeof(T).FullName, message);
}
}
public class Logger
{
ILogUtility _logutility;
public Logger(ILogUtility logutility)
{
_logutility = logutility;
}
public void Log(LogType logtype, string message)
{
_logutility.Log(logtype, message);
}
}
私は柔軟性があり、今後LogUtilクラスを削除して他のものを使用する機能が必要です。あまりにも多くのラッパークラス
次のようにだから私はLoggerUtilityラッパークラスを記述します。
class LoggerUtility<T>
{
Logger logger;
public LoggerUtility()
{
LogUtil<T> logutil = new LogUtil<T>();
logger = new Logger(logutil);
}
public void Log(LogType logtype, string message)
{
logger.Log(logtype, message);
}
}
私のクライアントコードを次のように
public class TestCode
{
public void test()
{
new LoggerUtility<TestCode>().Log(LogType.Info, "hello world");
}
}
をLogUtilからの疎結合を取得するには、私は2つのラッパークラスLoggerとLoggerUtilityを書き終わります。ですから、将来ILOGUtilityに別のメソッド を追加する必要がある場合は、そのメソッドをLoggerクラスに追加してからLoggerUtilityを追加する必要があります。
次のように私は、クライアントのコードを書くことができるようにLoggerUtilityを書くための最良の方法は何ですか:
私に知らせてください。
おかげ
ログインフラストラクチャを頻繁に変更している頻度は?これはあまりにも多いようです – BrokenGlass
しかし、私はまだ柔軟性を持っていると思うでしょう –