我有一个旧的防护类 - 它是const或静态方法,典型的是一个实用类.
然而,最近我开始使用NLog - 所以我的守卫现在可以记录和投掷.NLog的问题是每个调用类(守卫所在的位置)都会创建自己的记录器,因此不是这样的方法:
public static void NotNull<T>(T obj, string param)
{
if (obj.Equals(null))
throw new ArgumentNullException(param);
}
Run Code Online (Sandbox Code Playgroud)
我有一个像这样的签名的方法:
public static void NotNull<T>(T obj, string param, Logger logger, LogLevel logLevel)
{
}
Run Code Online (Sandbox Code Playgroud)
现在我的所有方法都包含与记录器相关的两个相同参数,所以我几乎决定依赖注入是一种更好的方法,将记录器传递给构造函数,然后obj进入方法.
我的问题是基于我的经验不足 - 我的新课程不会是静态的,但是我应该将这些方法保留为静态吗?
看起来你根本不需要传递记录器.有一个静态记录器字段(请参阅此答案以获取详细信息),这是很好的并且不违反常规做法,因此它在类的所有实例中共享.考虑:
public static class Utils
{
private static readonly ILog Log = LogManager.GetLogger(typeof(Utils));
public static void NotNull<T>(T obj, string param)
{
Log.Debug("Huston, we got a null.");
if (obj.Equals(null))
throw new ArgumentNullException(param);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
714 次 |
| 最近记录: |