【发布时间】:2015-07-15 17:03:11
【问题描述】:
我正在开发一个小型控制台应用程序,并且正在记录事务。
我使用以下代码应用了 DI(Ninject):
class Program
{
private static ILogger _logger;
private static IKernel kernel;
static Program()
{
kernel = new StandardKernel();
kernel.Bind<ILogger>().To<Log4NetWrapper().WithConstructorArgument<Type>(MethodBase.GetCurrentMethod().DeclaringType);
}
static void Main(string[] args)
{
_logger = kernel.Get<ILogger>();
try
{
_logger.Info("Initializing...etc " + i.ToString() + ": " + DateTime.Now);
}
//etc...
}
}
效果很好,但后来我想使用 Factory 在另一个类中实现相同的结果(用于比较):
public class TestLogFactory
{
private static readonly ILogger _logger =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public void LogInfo(object message)
{
_logger.Info(message);
}
}
第二种方法对我来说看起来更干净,如果我更改实现(替换日志实现)我只需要更改 LogManager 类,但在第一种方法中我需要更改注入依赖项的每个类。我的问题:在这种情况下使用第一种方法有什么好处吗?我正在学习 DI,这就是我尝试使用它的原因。
谢谢
【问题讨论】:
标签: c# dependency-injection ninject factory