在C#中,实现ILogger扩展性的方法之一是通过使用接口和依赖注入。下面是一个简单的示例,展示了如何创建一个可扩展的ILogger类:
public interface ILogger
{
void Log(LogLevel level, string message);
}
public class BasicLogger : ILogger
{
public void Log(LogLevel level, string message)
{
Console.WriteLine($"Log: [{level}] {message}");
}
}
public static class LoggerExtensions
{
public static void LogError(this ILogger logger, string message)
{
logger.Log(LogLevel.Error, message);
}
public static void LogWarning(this ILogger logger, string message)
{
logger.Log(LogLevel.Warning, message);
}
}
public interface ILoggerFactory
{
ILogger CreateLogger();
}
public class DefaultLoggerFactory : ILoggerFactory
{
public ILogger CreateLogger()
{
return new BasicLogger();
}
}
public class Program
{
public static void Main(string[] args)
{
var factory = new DefaultLoggerFactory();
ILogger logger = factory.CreateLogger();
logger.Log(LogLevel.Info, "Application started.");
logger.LogError("An error occurred.");
logger.LogWarning("A warning occurred.");
}
}
这样,你就可以通过实现ILogger接口和扩展LoggerExtensions类来添加更多的日志记录功能。同时,通过使用依赖注入和IFactory接口,你可以轻松地替换日志记录器的实现,从而提高代码的可扩展性和可维护性。