2017-11-23 12 views
0

私はいくつかのAutofacモジュールを作成しました...今はweb.configを使ってコンテナに登録したいと思います。 config私は書いた:autofacのweb.configモジュールを読んで、ソリューション設定に応じてコンテナの設定を変更してください

<autofac defaultAssembly="Autofac.Example"> 
    <modules> 
    <module type="DebugModuleTest1"></module> 
    <module type="DebugModuleTest2"></module> 
    </modules> 
</autofac> 

今私は自分のコンテナを構築する必要があります。しかし、autofacのドキュメントは私には分かりません。私は私のモジュールを読んでコンテナを作るために何をしなければならないのか分かりません。

public class MyCustomContainer 
{ 
    public void Build(HttpConfiguration config) 
    {    
     var builder = new ContainerBuilder(); 

     Microsoft.Extensions.Configuration.ConfigurationBuilder x = new Microsoft.Extensions.Configuration.ConfigurationBuilder(); 
     //var sec = x.AddInMemoryCollection().Build().GetSection("autofac"); 
     // var y = x.AddXmlFile("Web.config"); 

     var y = new ConfigurationBuilder().SetBasePath(AppDomain.CurrentDomain.BaseDirectory); 
     var z = y.AddXmlFile("Web.Config"); 


     config.DependencyResolver = new AutofacWebApiDependencyResolver(container); 
    } 
} 

私はConfigurationSettingsReaderクラスを用意していないので、私はAutofacの最新バージョンを使用しています。

誰でも教えてください。このように、私は私のソリューション構成(あなたが知っている、古典web.debug.configに応じてweb.configファイルを「変更する」可能性があるため、私は、web.configファイルに興味深い省の構成を発見した

EDIT

、 web.release.config、など)...私はディレクティブの使用(の#ifかくかくしかじか、...)、または単に条件...

を避け、正しいモジュールを登録するのに役立つ可能性があり

私はすでにモジュールを使用していますが、正しい解決策がmodの中にプロパティを追加しているとは思いませんプロジェクトを展開したい選択された環境に応じて解決するコンポーネントを選択してください。 私はちょうどexampleを読むこの解決策を考えています(ちなみにFlexibility to OverrideはまだConfigurationSettingsReaderを指しています。それは大丈夫ですか?)

答えて

1

4.0バージョンの設定では、web.configに何も保存しません。すべてが別のXMLファイルまたはJSONファイルにあります。私はJSONをお勧めしたいと思います。

あなたが前に利用可能app.configファイルまたはweb.configファイルベースの設定を使用していた場合は、あなたがあなたのアプリケーションと構成の設定方法を新しい形式に設定を移行し、更新する必要があります:The documentationはかなりよくあること概説しますコンテナ。

がたくさん間違いなくありますしながら、私たちは実際にはしないように、「TL; DR」してみてください、できるだけ多くを文書化しようとしている多くの時間を費やしたこと。あなたが飛び回っていると、あなたは4.0のもので動作する「前の4.0」のセクションで終わることになります。それはできません。 your comment on this other questionのように、最初にいくつかのことを見逃している可能性があります。

クイックスタートセクションで時間をかけてください。そのセクションには、動作の仕方を示すC#コードとJSONコードがあります。繰り返しますが、これをスキップするのは簡単です。

ドキュメントで十分な例が表示されない場合は、Autofac.Configuration repoのユニットテスト、特にthe folder full of test filesのユニットテストで、テストで使用するXML形式とJSON形式の両方の例を参照してください。

最後に... 3つのヒント:

  1. 設定はコードの機能-用-機能代わるものではありません。驚くほどクレイジーなロジックベースのものをお探しなら、おそらくモジュールを登録するいくつかの設定でmodulesに固執してください。
  2. AutofacとDIの用語に精通していること。 DIまたはAutofacを初めてお使いの方は、「コンポーネント」、「サービス」などの用語が混乱します。構成はこれらの用語を使用します。つまり、あなたが見ているものを得ることができない可能性があります。ドキュメントで時間を過ごす。 The getting started pageには、用語の一部の紹介が含まれています。
  3. 新しいMicrosoft設定システムについて知る。There is separate doc about thatは、マイクロソフトが保有しています。彼らのドキュメントは、環境に基づいて設定を変更する方法からカスタム設定プロバイダを作成する方法まで、すべてを説明しています。 Autofacは設定巨人の肩に立っています。新しい設定システムから無料で提供されるため、この柔軟性はもう必要ありません。
+0

答えていただきありがとうございます。 私の回答が長すぎるため投稿を編集しました...私はあなたに "TL; DR"をしていないことを保証します。私の先週、私は仕事をやめてしまいました。私は読んで、試し始めました...私はすばらしい、クレイジーな、論理ベースのものをしたくありません、私はちょうど私ができる最も正しいことをしたい...私はやっている「うまくいく」というコードを望んでいません...私はすでにそれを持っていますが、私がやったことに満足していません... – Ciccio

+1

あなたはあなたが質問するように質問していなかったように聞こえます。環境に基づいた設定? 3番目のヒントを追加しました。これはMicrosoftの設定システムで読み上げました。すべての拡張ポイントと処理が組み込まれているため、その上に構築しました。ドキュメントには複数の環境で作業する方法が示されています。 –

+0

はい...あなたは正しいです...あなたが答えた直後に私の質問が間違っていることを理解しました。あなたの答えはわかった。どうもありがとうございました。 – Ciccio

関連する問題