問題タブ [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 投票する
8 に答える
15625 参照

wpf - WPFアプリケーションで依存性注入は可能ですか?

主にユニットのテスト容易性を向上させるために、WPFアプリケーションで依存性注入の使用を開始したいと思います。私のアプリは主にMV-VMパターンに沿って構築されています。私はIoCコンテナのAutofacを見ていますが、それはこの議論にとってそれほど重要ではないと思います。

App.xaml.csでコンテナーを作成して解決できるため、開始ウィンドウにサービスを挿入するのは簡単なようです。

私が苦労しているのは、ViewModelsとServicesをユーザーコントロールにDIする方法です。ユーザーコントロールはXAMLマークアップを介してインスタンス化されるため、ユーザーコントロールを使用する機会はありませんResolve()

私が考えることができる最善の方法は、コンテナーをシングルトンに配置し、ユーザーコントロールにグローバルコンテナーからViewModelを解決させることです。これは、コンポーネントがServiceLocatorに依存している必要があるため、せいぜい中途半端な解決策のように感じます。

WPFで完全なIoCは可能ですか?

[編集]-Prismが提案されていますが、Prismを評価することさえ大きな投資のようです。もっと小さいものが欲しいです。

[編集]これが私が止められたコードフラグメントです

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

asp.net-mvc - 3 層 Web アプリケーション (ASP.NET MVC) で Autofac を使用するには?

私が見つけた例では、コントローラがデータ アクセス レイヤのリポジトリ クラスを直接使用する 2 レイヤ アーキテクチャを使用しています。ここまたはここを参照してください。

コンポーネントを使用するサービスまたはビジネス ロジック層がある場合、データ アクセス層からコンポーネントをどこに登録しますか? データ アクセス層は、理想的にはユーザー インターフェイス層から参照されるべきではありませんよね? したがって、Application_Start は適切な場所ではありません。

より良い方法は何でしょうか?

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

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

asp.net-mvc - Autofac を使用して、リクエストごとに 1 つの NHibernate ISession があることを確認するにはどうすればよいですか?

Application_Start メソッドで使用される Autofac モジュールに次のコードがあります。

リポジトリのコンストラクターは、ISession を引数として受け取ります。しかし、明示的に HttpRequestScoped にするように要求したにもかかわらず、アプリケーション全体に対して 1 つのセッションになってしまいます。

ContainerDisposal HTTP モジュールを構成しました。

ドキュメントによると、ネストされたコンテナーを作成する必要がありますが、Autofac に依存関係を自動配線させています。

私は何をすべきか?

ありがとう!

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

asp.net - ASP.NET と MVP パターンで Autofac を使用する

Autofac を既存の ASP.NET Web アプリケーションに統合しようとしています。

ページは MVP パターンに従います。各ページはビューを実装し、機能をプレゼンターに委任します。ビューは、コンストラクターを介してプレゼンターに注入されます。

プレゼンターとビューを登録でき、ページは正常に読み込まれましたが、ポストバックが発生すると、ビューのユーザー コントロールが null になります。Autofac は、インスタンスに実際の Page インスタンスを与えるのではなく、プレゼンターに与える Page の新しいインスタンスを作成するようです。Page インスタンスを Autofac に登録する方法はありますか?

ASP.NET と MVP で Autofac を使用している人はいますか?

ありがとう!

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

autofac - Autofacパラメータの受け渡し

最新バージョンのautofac(1.3.3.54)を統合しようとしていますが、次の問題が発生しています。

プロジェクトのGoogleコードウィキによると、Registerコールバックでパラメータを使用するための推奨される方法は次のとおりです。

builder.Register((c、p)=> new Foo(p.Get( "arg1")));

ただし、これは前述のバージョンのautofacコードではコンパイルされません。ソースを調べたところ、pがIEnumerable(ComponentActivatorWithParameters)であることがわかりました。ドキュメントに関してコードが古くなっていませんか?

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

c# - 特定のシナリオで ninject/autofac を使用する

私はいくつかのプロバイダーを持っています、例えば -

これらの各プロバイダーは、私にセッションを与えることができます:

現在、プロバイダーを調べ、タイプをインスタンス化し、URL を (手動で) 挿入することで、「名前付き」セッションをインスタンス化しています。

おそらくURLを理解し、適切なセッションを返す必要があるセッションファクトリを使用できます。

これを ninject/autofac でよりエレガントに/簡単に処理する方法はありますか?

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

c# - MySQL で流暢な nHibernate を構成する方法

MySql データベースを使用するように nHibernate を構成しようとしています。mssql と sqlite の例は見つかりましたが、mysql の例は見つかりませんでした。では、mysql を使用するようにこれを変更するにはどうすればよいですか。

0 投票する
5 に答える
9664 参照

asp.net - Web アプリケーションの Autofac では、簡単にアクセスできるようにコンテナーをどこに保存すればよいですか?

私はまだ Autofac を使い始めたばかりで、ドキュメントと例で見逃していることの 1 つは、Web アプリケーションのさまざまな場所から構成済みのコンテナーに簡単にアクセスできるようにする方法です。

Autofac コントローラー ファクトリを使用して、コンストラクターによって注入されたコントローラーの依存関係を自動的に解決できることはわかっていますが、まだ注入されていない、解決する必要がある可能性のある他のものについてはどうですか。

これについて私が気付いていない明らかなパターンはありますか?

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

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

inversion-of-control - Autofac の長所と短所

Autofac について読んだことがありますが、それは高速です。コーディングが含まれているのを見てきましたが、かなりきれいです。しかし、私はそれを使用する方法がよくわかりません。私は StructureMap を使用しましたが、これには静的な ObjectFactory があります。Ninjectにはカーネルがありますが、AutofacのGoogleページでは、次のようなことを推奨しています:

これはWinFormsアプリなので、上記を実行して無効なオブジェクト状態になったので、グローバルIContainerに切り替えて、このようにしました

3、5回ほど使用しました。しかし、それは効率的ですか?または、次のようなことをする必要があります

そしてカバーの下

どちらを使用しますか?なぜですか? また、CreateInnerContainer() を使用した場合のペナルティはありますか?

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

c# - WPF のメモリ リークを追跡する

コンテキスト: WPF アプリケーションを迅速に配信するためのフレームワークを構築しています。このフレームワークは Autofac を IoC コンテナーとして使用し、Prism v1 のリージョンも使用します。Microsoft の Parallel 拡張機能を使用してタスクをスケジュールしています。

次の問題に直面しています: アプリケーションを空のビュー (領域とプレースホルダー コントロールを持つシェルのみ) で起動すると、メモリは約 60 秒間安定したままになり、その後は約 1 秒ごとに 4kb、次に 4kb ずつ増加します。 、その後8kb。したがって、3 秒ごとに 16Kb がメモリ プレッシャに追加されます。

リークを追跡するために何を試みましたか。最初は dotTrace を使用しましたが、30 分間隔で撮影した 2 つのスナップショットに違いは見られませんでした。より多くの情報が得られるため、.NET メモリ プロファイラに移動しましたが、2 つのスナップショット間の違いは見られません。多数のオブジェクトが作成されていることがわかりますが、それらも削除され、結果としてデルタが 0 になります。そこで、windbg に進みましたが、結果は同じです。

もう 1 つの奇妙な点は、sysinternals dbgvw を起動しても、アプリケーションで呼び出しが行われていないことです。

何が/誰が犯人かを突き止めるために次に何をしようとしているのか、何か提案はありますか?