这个问题与史蒂文的答案有关 - 这里.他提出了一个非常好的记录器包装器.我将在下面粘贴他的代码:
public interface ILogger
{
void Log(LogEntry entry);
}
public static class LoggerExtensions
{
public static void Log(this ILogger logger, string message)
{
logger.Log(new LogEntry(LoggingEventType.Information,
message, null));
}
public static void Log(this ILogger logger, Exception exception)
{
logger.Log(new LogEntry(LoggingEventType.Error,
exception.Message, exception));
}
// More methods here.
}
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是创建代理到log4net的实现的正确方法是什么?我应该只使用类型参数添加另一个Log扩展方法,然后在里面创建一个开关吗?如果使用不同的log4net方法LoggingEventType?
第二个问题,以后在代码中使用它的最佳方法是什么?
因为他写道:
(...)您可以轻松创建ILogger实现(...)并配置您的DI容器以将其注入到在其构造函数中具有ILogger的类中.
这是否意味着每个会记录的类(基本上都是每个)都应该ILogger在它的构造函数中?
我只是想知道,是否有更好的方法来初始化 C# 多维对象数组(引用类型)。
这是我的代码:
Board = new Field[BoardHeight, BoardWidth];
for (int i = 0; i < BoardHeight; i++)
{
for (int j = 0; j < BoardWidth; j++)
{
Board[i, j] = new Field();
}
}
Run Code Online (Sandbox Code Playgroud)
如果我可以摆脱 for/for 循环并用单行替换它?那太好了。