2016-08-08 4 views
0

私たちはAutofacを使用して、Webアプリケーションで簡単な依存性注入を行います。これはすべて、舞台裏で動作するクラスで設定および登録されています。私たちのプロジェクトでは次のように簡単に注入物を注入できます。コンソールアプリケーションへの依存性注入

//interface 
public interface ISuperHereService 
{ } 

//class that uses the interface 
public class SuperHeroFactory 
{ 
    public ISuperHeroService SuperHeroService { get; } 

    public SuperHeroFactory(ISuperHeroService superHeroService) 
    { 
     SuperHeroService = superHeroService; 

     ...do all our stuff... 

しかし、今では別のプロジェクトをコンソールアプリケーションとして作成する必要がありました。私のコンソールアプリケーションにはMainメソッドがあります。

Mainメソッドにインターフェイスを挿入する方法は全くわかりません。

これは可能ですか?

ありがとうございます!

+2

コンソールアプリケーションの[Autofac DIコンテナ](http://codereview.stackexchange.com/questions/56197/autofac-di-container-in-console-app) –

+2

をここで説明しますhttp:// stackoverflow .com/questions/31903082 /簡単なインジェクタ付きコンソールへのインジェクション –

答えて

5

Mainであなたのコンテナを作成し、設定(またはMainから呼び出されるメソッドで。) その後コンテナからSuperHeroFactoryのインスタンスを解決し、必要にどんなメソッドを呼び出します。

誰かが、コンテナから何かを直接解決してはいけないということに反対するかもしれません。それは本当ですが、Mainはあなたの構成ルートです。コンテナを参照する場所ですから、そこには適切です。

2

いいえ、あなたのMain()メソッドではそうしないでください。むしろそのISuperHeroServiceインスタンスを取り、必要な作業を行う別のクラスを定義します。次に、Main()メソッドでそのクラスのインスタンスを作成し、時刻をインスタンス化するときに同じようにDIを実行することができます。