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では、SessionFactoryなどのすべての「util」インスタンスを含むシングルトンまたは静的クラスを実装する必要がありますか?では、WinFormでの注入の場合、デザインパターンやベストプラクティスはありませんか?

4

2 に答える 2

1

依存性注入にはいくつかの異なるフレーバーがあります

  • コンストラクターインジェクション–オブジェクトの作成時にコンストラクター関数を介して依存関係をアタッチします
  • セッターインジェクション–セッタープロパティを介して依存関係をアタッチします
  • インターフェイスインジェクション-これは奇妙なアヒルです(特定のDIツールによって駆動される使用法)
  • Service Locator –依存関係を取得および作成する方法を知っているよく知られたクラスを使用します。技術的にはDIではありませんが、これはほとんどのDI/IoCコンテナツールが実際に行うことです。

    依存性注入は、オブジェクトの作成をコンテナーのスコープ外に置くことで、問題(少しの密結合)を解決します。

    例を含む詳細な説明を確認してください

于 2013-02-06T13:07:55.317 に答える
0

ボタンクリックの汎用イベントハンドラー内にビジネスロジックを配置したくないと思います。イベントハンドラー内からこれを処理する別のオブジェクトを呼び出すか、そのオブジェクト自体にボタンクリックイベントをサブスクライブさせます。

于 2013-02-06T13:37:24.417 に答える