質問

IOCをコンソールアプリケーションに導入するための優れたソリューションは誰でも考えられますか?

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

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

この体験をシームレスにしたいのですが、コンソールアプリケーションからこれを実現する方法は考えられません。

役に立ちましたか?

解決

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

他のヒント

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top