コンソールアプリケーションでAutofacを使用したいと考えています。それは私の本当の最初の使い方です。それ以前はASP.NET MVCでのみ使用していました。 MVCプロジェクトでは、Global.asaxでAutofacをセットアップし、コントローラにIServiceを注入することができます。コンソールアプリケーションで は、私は以下のようにそれを実行します。それのコンソールアプリケーションのオートファンクション(コンベンション)
internal class Program
{
private static IContainer Container { get; set;}
private static void Main(string[] args)
{
Container = Container.Configure(); // here I have all necessary objects set
// now I can use it in Main method as:
using (var scope = Container.BeginLifetimeScope())
{
scope.Resolve<ISomething>();
}
}
}
あなたが見ることができるように使用量がちょうどメイン方法が単純です。それを外部クラスで使うのはどうですか?クラス猫を作成し、その中にオートファックを使用したいとしましょう。クラスプログラムのコンストラクタオブジェクトContainerに渡す必要がありますか?例:
Cat cat = new Cat(Program.Container, "Molly");
Catクラス内にIContainerを作成する必要がありますか?
最適なソリューションは何ですか?
メーソン、貴重な答えをありがとう。最初の投稿から私の問題を広げたいと思います。あなたが書いたように、メインメソッドの中にオブジェクトを作ることができます。私は他のクラスでオートファックを使いたいのですが? AutoFacを使用して注入: のは、私はいくつかの他のサービスを利用したいクラス 'パブリッククラスEmployeeService { 公務員GETEMPLOYEE(小数点以下ID) ここ{// があるとしましょう。 //ここでもう一度コンテナオブジェクトを作成し、次に: //(var scope = Container.BeginLifetimeScope()){...}を使用する必要があります } } ' – cube
@キューブあなたが何を求めているのか分かりません今。はい、AutoFacでオブジェクトのインスタンスを作成し、コンストラクタインジェクションを介してオブジェクトを注入することができます。 – mason
私は私の控えめと混同します。しかし、あなたは私の疑問に答えました。ありがとうございました。 – cube