Winforms和IoC / DI

时间:2013-02-06 12:27:57

标签: c# winforms

在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中的注入,没有设计模式或最佳实践吗?

2 个答案:

答案 0 :(得分:1)

有几种不同风格的依赖注入

  • 构造函数注入 - 在创建对象时通过构造函数附加依赖项
  • Setter Injection - 通过setter属性附加依赖项
  • 接口注入 - 这是一个奇怪的鸭子(由特定DI工具驱动的使用)
  • 服务定位器 - 使用知道如何检索和创建依赖关系的众所周知的类。不是技术上的DI,但这是大多数DI / IoC容器工具真正做的事情。

    依赖注入通过将对象的创建放在容器范围之外来解决问题(一点点紧耦合)。

    查看 detailed explanation with examples

答案 1 :(得分:0)

我认为您不希望将业务逻辑放在按钮单击的通用事件处理程序中。您要么想要调用一个不同的对象,它将从事件处理程序内部处理它,或让该对象本身订阅按钮单击事件。