12

IOC をコンソール アプリケーションに組み込むための優れたソリューションを思いつく人はいますか?

現時点では、次のメソッドで静的クラスを使用しています。

public static T Resolve<T>()
{
    return dependencyResolver.Resolve<T>();
}

エクスペリエンスをシームレスにしたいのですが、コンソール アプリケーションからこれを実現する方法が思いつきません。

4

4 に答える 4

7

Resolve<T>()どこかでサービス ロケーター呼び出し ( ) を行う必要があります。コツは、できるだけ邪魔にならないようにすることです。コンソール アプリケーションの場合、このブートストラップはMain()メソッドで発生します。そこで実行し、他の場所でこれらの Resolve 呼び出しを最小限に抑えると、すばらしい結果が得られます。ほとんどの依存関係では、コンストラクター インジェクションを使用します。

于 2009-01-11T22:46:49.267 に答える
3

コンソール アプリケーションには、IoC の Web またはフォーム アプリケーションに対する制限はありません。任意のもの (Spring、Ninject、Unity など) を使用できます。それらのほとんどは、コンソール アプリケーションの外部で XML ファイルを使用して構成でき、Ninjector のようなものはアプリケーション内で構成する必要があります。

于 2008-11-13T19:13:04.647 に答える
1

問題なくコンソール アプリから Spring.NET を使用しました。構成ファイルを指すだけで、すべての依存関係がフックされます。もちろん、これらのオブジェクトをどうするは、コンソール アプリが何をしようとしているのかによって異なります。

于 2008-11-13T19:08:34.407 に答える
1

Microsoft Unityをチェックアウトします。

于 2008-11-13T19:12:05.880 に答える