IOC をコンソール アプリケーションに組み込むための優れたソリューションを思いつく人はいますか?
現時点では、次のメソッドで静的クラスを使用しています。
public static T Resolve<T>()
{
return dependencyResolver.Resolve<T>();
}
エクスペリエンスをシームレスにしたいのですが、コンソール アプリケーションからこれを実現する方法が思いつきません。
IOC をコンソール アプリケーションに組み込むための優れたソリューションを思いつく人はいますか?
現時点では、次のメソッドで静的クラスを使用しています。
public static T Resolve<T>()
{
return dependencyResolver.Resolve<T>();
}
エクスペリエンスをシームレスにしたいのですが、コンソール アプリケーションからこれを実現する方法が思いつきません。
Resolve<T>()
どこかでサービス ロケーター呼び出し ( ) を行う必要があります。コツは、できるだけ邪魔にならないようにすることです。コンソール アプリケーションの場合、このブートストラップはMain()
メソッドで発生します。そこで実行し、他の場所でこれらの Resolve 呼び出しを最小限に抑えると、すばらしい結果が得られます。ほとんどの依存関係では、コンストラクター インジェクションを使用します。
コンソール アプリケーションには、IoC の Web またはフォーム アプリケーションに対する制限はありません。任意のもの (Spring、Ninject、Unity など) を使用できます。それらのほとんどは、コンソール アプリケーションの外部で XML ファイルを使用して構成でき、Ninjector のようなものはアプリケーション内で構成する必要があります。
問題なくコンソール アプリから Spring.NET を使用しました。構成ファイルを指すだけで、すべての依存関係がフックされます。もちろん、これらのオブジェクトをどうするかは、コンソール アプリが何をしようとしているのかによって異なります。
Microsoft Unityをチェックアウトします。