我在我的项目中使用依赖注入有一个小问题。为了描述问题,我将使用简单的例子。假设我在写记录器应用程序,并且最终用户可以选择是将日志保存到文件还是写入控制台。用户通过选择运行应用程序中的复选框来控制它。他可以选择两个或只有一个。选择后,点击“LOG”按钮执行操作。 现在我从我的DI的知识了解我应该创建接口:依赖注入和接口的很多实现
public interface ILogger
{
void log();
}
和两个实现
public class ConsoleLogger : ILogger
{
public void log()
{
...
}
}
public class FileLogger : ILogger
{
public void log()
{
...
}
}
我知道我可以在例如统一容器都实现注册,并让他们在构造函数通过使用表,但是然后我不能识别哪个实施方式中是FileLogger并且其ConsoleLogger(在情况下,当用户仅选择一个复选框)
第二选项是解决IMPL使用服务定位器模式来自ioc的名字。我不知道这是否是一个好方法
在我的实际应用中,我将有更多的选择超过两个,有将每个选项是一个很大的共享接口。
也许最好是使用MEF?
应用程序将使用WPF + PRISM编写。
我明白,我所有的工厂应该是我的根组成部分。谢谢! – niba