在Web应用程序中,使用IoC / DI来获取数据库会话,DAO等等是合理的,因为不是您调用“事件”的是注入器。您只需要在事件函数中声明正确的参数。
但是在winforms应用程序中,只有你调用这些函数。您没有“查询字符串处理程序”。
听起来真的无法改变
private void button1_Click(object sender, EventArgs e);
到
private void button1_Click(object sender, EventArgs e, DbSession dbSession);
并且“处理程序”会自动为您注入内容。
所以,问题是:在winforms中我只需要实现包含所有“util”实例的单例或静态类,如SessionFactory等? 那么对于winforms中的注入,没有设计模式或最佳实践吗?
答案 0 :(得分:1)
有几种不同风格的依赖注入
服务定位器 - 使用知道如何检索和创建依赖关系的众所周知的类。不是技术上的DI,但这是大多数DI / IoC容器工具真正做的事情。
依赖注入通过将对象的创建放在容器范围之外来解决问题(一点点紧耦合)。
答案 1 :(得分:0)
我认为您不希望将业务逻辑放在按钮单击的通用事件处理程序中。您要么想要调用一个不同的对象,它将从事件处理程序内部处理它,或让该对象本身订阅按钮单击事件。