問題タブ [autofac]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
3424 参照

asp.net-mvc - Autofacを使用してコントローラーのModelStateをサービスコンストラクターに渡す方法は?

ModelStateDictionaryにラッパーがあり、すべてのサービスがこれを受け入れます。コントローラーModelStateDictionaryをラッパーのコンストラクターに挿入してからサービスコンストラクターに挿入するようにautofacを構成することは可能ですか?

ありがとう

0 投票する
2 に答える
1629 参照

c# - プレゼンターの依存性注入

コンストラクターのパラメーターとしてサービスとビューコントラクトを受け取るプレゼンターがあります。

Autofacでサービスを解決します。

私のASPXページ(実装の表示):

問題は、FooPresenterのコンストラクターが、コンテナーが新しいページを作成するためではなく、特定のページを予期していることです。

この解像度だけで、ビューの特定のインスタンスである現在のページをコンテナーに提供できますか?それは理にかなっていますか、それとも私はこれを別の方法で行う必要がありますか?

0 投票する
1 に答える
1259 参照

c# - IOC/Autofac コンテナ

私は現在 Autofac を使用していますが、他の IOC コンテナーに関するコメントも受け付けています。可能であれば、Autofac を使用したソリューションを希望します。また、私は IOC に少し慣れていないため、IOC コンテナを何に使用すべきかをひどく誤解している可能性があります。

基本的には以下のような状況です。

アプリの最上位の IOC コンテナーがあります。子コンテナー/スコープのツリーがあり、同じ「サービス」(IWhatever) を解決するツリーのレベルに応じて異なる方法で解決したいと考えています。さらに、ツリーのあるレベルでサービスが登録されていない場合は、適切な実装が見つかるまでツリーを上方向に横断したいと考えています。

さらに、特定のコンポーネントを作成するときに、親コンテナー/スコープへのアクセスが必要になる可能性は十分にあります。多くの場合、登録しているコンポーネントは、親スコープ内の同じサービスまたは別のサービスに依存します。

この依存関係を Autofac で表現する方法はありますか? 何かのようなもの:

いくつかの理由で、上記の疑似コードに似たものを動作させることができません。

A) スコープ ツリーのすべてのレベルが共通の登録セットを共有しているようです。特定の「スコープ」に限定された特定の登録を行う方法を見つけることができないようです。

B) 特定のスコープの親スコープを取得する方法が見つからないようです。コンテナー内の ILifetimeScope を解決し、それを親スコープを提供する具体的な LifetimeScope インスタンスにケース化することはできますが、おそらくこの方法で使用することを意図したものではないと推測しています。これは安全ですか?

C) どのコンテナが解決されたオブジェクトを所有しているかを Autofac に伝える方法がわかりません。多くのコンポーネントについて、コンポーネントが構築されるスコープによって「所有」されることを望みます。ここでタグ付けされたコンテキストが役に立ちますか? ツリーのすべてのレベルに一意のタグを付ける必要がありますか? ツリーの深さは実行時に決定されるため、これは困難です。

非常に長い質問で申し訳ありません。要約すれば:

1) Autofac を使用してやりたいことを行う方法はありますか?

2) この種の依存構造により適した別のコンテナーはありますか?

3) IOC は、この点で完全に間違ったツールですか?

0 投票する
2 に答える
898 参照

c# - DIフレームワークで複数の構成ファイルを処理するためのグッドプラクティス

現在のソリューションには18のプロジェクトがあり、それらのほとんどには独自の構成ファイル(app.configまたはweb.config)があります。各プロジェクトは、単一の共有BLLアセンブリを使用します。Autofacを使用して依存関係を処理していますが、構成を適切に管理する方法がありません。構成エントリはほぼ同じですが、値が異なります。一部のプロジェクトはカスタム構成セクションを使用し、一部は使用しません。

私は結局:

  1. 単一のautofacbootstrapperクラスを作成して、構成ファイルラッパーを除くすべての依存関係を登録します。
  2. IConfigurationインターフェイスを使用して(すべてのプロジェクトで参照される)個別のアセンブリを作成します。
  3. IConfigurationの各プロジェクト独自の実装を作成します。
  4. 共有ブートストラップを介した各プロジェクトの適切な場所でのブートストラップ依存関係。
  5. ブートストラップ登録後に、プロジェクト自体のIConfiguration実装を個別に登録します。

私は一般的にAutofacとDIに非常に慣れておらず、複雑さと拡張性の間の適切なバランスを見つけるよう努めています。

構成ファイルを管理するためのより良い方法はありますか?

ありがとうございました。

0 投票する
2 に答える
378 参照

asp.net-mvc - Autofac は MVC ソースが好きではない

ASP.NET MVC 2 RC2 ソース コードをソリューションに追加しました (次の手順を使用します: http://blog.stevensanderson.com/2009/02/03/using-the-aspnet-mvc-source-code-to-debug -your-app/ ) ですが、Autofac からのエラーのためにビルドされません。

私は特に MVC バージョン 1 への言及に混乱しています。MVC ソース コードを追加する前から、MVC 2 (バイナリから) を使用していましたが、Autofac は文句を言いませんでした。

0 投票する
3 に答える
4887 参照

c# - Autofac: IoC コンテナーを通過せずに IDisposable オブジェクトの有効期間を制限する方法

私は現在、Autofac の使用方法を学んでおり、IDisposable決定論的にオブジェクトを破棄することに固執しています。問題を述べる前に、まず状況を提示させてください。

開始位置:

オブジェクト モデルが次のインターフェイスを介して定義されているとします。

IAppleさらに、ファクトリとして使用されるデリゲートを定義します。

Autofac 構成:

ここで、上記の型を次のように登録します。クラスAppleとの両方のコードを省略していることに注意しHorseてください。これらは簡単に実装できるためです。

私の問題:

method の実装方法がよくわかりませんIHorseKeeper.Feed。これが私が現在持っているものです:

これは、Autofac に完全に依存しないため、私が希望する種類のコードです。期待どおりに機能する限り、別の IoC コンテナーでも同様に機能しAppleFactoryます。

ただし、Autofac は私のために を処理するため、作成したすべてのオブジェクトAppleFactoryを追跡し、コンテナーの有効期間の終わりにそれら自体を必要とします。つまり、生成されたものは 2 回破棄されます。IAppleDisposeapple

Autofac にs の有効期間を処理させる方が簡単な場合があるため、 IAppleasとして登録することは実行可能な解決策ではないと思います。.ExternallyOwned()IApple

Autofacを使用した決定論的破棄には、 を使用してネストされたコンテナーを作成する必要がありますが、Autofac に依存するようになるため、container.BeginLifetimeScope()これを内部で使用したくありません。また、コードを IoC に依存しないようにしたいと考えています。HorseKeeper.FeedHorseHorseKeeper

質問:

HorseKeeper.FeedHorseオンザフライで生成されたオブジェクトが適切に破棄されるようにしながら、IoC (Autofac) に依存しない方法で実装するにはどうすればよいですか?

0 投票する
2 に答える
387 参照

documentation - 印刷可能な autofac ドキュメント?

AutoFac について印刷可能なものが見つからないようです

0 投票する
1 に答える
4984 参照

inversion-of-control - autofac でカスタム初期化を実行する方法

autofac を既存のプロジェクトに追加していますが、一部のサービス実装では、Initialize メソッドを呼び出して構成情報を渡す必要があります。現在、私はコードを使用しています:

これは機能しますが、私はまだオブジェクトを自分で作成しています. カスタム初期化を実行する作成後の操作を構成することは可能ですか?

私が何を求めているかを理解してもらうために、理想的には次のコードになります。

更新: Autofac-2.1.10.754-NET35 を使用しています

0 投票する
1 に答える
1142 参照

autofac - Autofac 2.1.10 RC でのコレクションの登録

コードを Autofac 1.4 から 2.1.10 Release Candidate にアップグレードしています。

私のモジュールは以前に次のように登録を実行しました:

現在、RegisterCollectionパラメーターなしのオーバーロードはありません。名前を付けるのは気にしません。を渡すだけで問題ないと仮定するとnull、私のコードは 2.1 で次のようになります。

ただし、コンパイルすると、次のエラーが発生します.MemberOf

ジェネリック メソッド 'Autofac.RegistrationExtensions.MemberOf(Autofac.Builder.RegistrationBuilder, string)' を使用するには、'3' 型引数が必要です

念のため、null の代わりにコレクション名を入れてみましたが、効果はありませんでした。

2.1 でコレクションを登録する適切な方法は何ですか?

0 投票する
2 に答える
2444 参照

asp.net-mvc - Autofacコントローラー登録のカスタマイズ

AutofacとAutofac.Integrations.Webを使用してASP.NETMVCコントローラーを登録しようとしています。現在、アセンブリスキャンを使用してコントローラーを検索していますが、そのうちの1つには、代わりに渡す必要のある特別なパラメーターが必要です。以下は私が試した登録です。

ご協力ありがとうございました。