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 から疎結合を得るために、Logger と LoggerUtility の 2 つのラッパー クラスを作成することになります。したがって、将来、ILogUtility に別のメソッドを追加する必要がある場合は、そのメソッドを Logger クラスに追加してから、LoggerUtility に追加する必要があります。
次のようにクライアント コードを記述できるように、LoggerUtility を記述する最良の方法は何ですか。
new LoggerUtility<TestCode>().Log(LogType.Info, "hello world");
私にお知らせください。
ありがとう