1

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

4

2 回答 2

1

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

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

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

    查看带有示例的详细说明

于 2013-02-06T13:07:55.317 回答
0

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

于 2013-02-06T13:37:24.417 回答