問題タブ [unity-container]

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 投票する
1 に答える
224 参照

inversion-of-control - Unityでのカスケード解像度

Unityに登録したいTypeAとTypeBの2つのタイプがあるとします。TypeBはTypeAに依存しているので、コンストラクターインジェクションを介してTypeAをタイプBにインジェクトしたいと思います。だから私は次のようなものを書き、Unityに解決策をカスケードするのに十分賢くしてもらいたいと思います:

UnityにTyp​​eAを解決してTypeBに注入するように指示するにはどうすればよいですか?

設定ファイルを使用すればこれは可能のようですが、プログラムでどのように行うかわかりません。

提案を事前に感謝します!


編集:だから、Unityは私のためにこれを処理します。ただし、私の問題は、2つのコンストラクターを持つクラスがあることだと思います。

Unityは、使用するコンストラクターを見つけるのに問題があるようです。最初のコンストラクターは単体テスト用であり、2番目のコンストラクターは実行時に使用する必要があります。Unityはこれに問題を抱えています。

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

.net - Unityのインターセプトとコンストラクター

Unityでインターセプトを使用したいのですが、ここに私のコードがあります:

Tがパラメーターを持つコンストラクター(空のコンストラクター)を持つクラスである場合、Resolveを呼び出すと例外がスローされ、それ以外の場合は機能します。空でないコンストラクターを持つ型をインターセプトするにはどうすればよいですか?

アップデート

このコードは機能しますが、引数付きのコンストラクターを使用したい場合はどうなりますか?

私はこれを試しました:

そして私のコードでは:

そして、私は以前と同じ例外で戻ってきました...

0 投票する
7 に答える
11656 参照

c# - IDisposableとIoCをどのように調整しますか?

私はついに頭をC#のIoCとDIに巻き付け、いくつかのエッジに苦労しています。Unityコンテナーを使用していますが、この質問はもっと広く当てはまると思います。

IoCコンテナを使用して、IDisposableを実装するインスタンスをディスペンスすると、私はびっくりします。Dispose()が必要かどうかをどのように知る必要がありますか?インスタンスはあなたのためだけに作成された可能性があります(したがって、Dispose()する必要があります)。または、ライフタイムが他の場所で管理されているインスタンスである可能性があります(したがって、そうでない方がよいでしょう)。コードには何もわかりません。実際、これは構成に基づいて変更される可能性があります!!! これは私には致命的なようです。

そこにいるIoCの専門家は、このあいまいさを処理するための良い方法を説明できますか?

0 投票する
4 に答える
8952 参照

c# - Unity[依存性]注入と継承

私の質問は次のとおりです。ApplicationControllerというベースコントローラー(ASP.Net MVCコントローラー)があり、すべてのコントローラーがそれを継承するようにします。このベースコントローラーには、[Dependency]属性でマークされたILoggerプロパティがあります。(はい、コンストラクターインジェクションを使用する必要があることはわかっています。この属性について知りたいだけです)。

コンテナを作成し、タイプを登録し、デフォルトのファクトリを変更しました。すべて問題ありません。問題は、派生コントローラーでLoggerプロパティを使用しようとしても、解決されないことです。

私は何が間違っているのですか?派生コントローラーを作成するときに、コンテナーが基本クラスの依存関係を解決しないのはなぜですか?

コードサンプル:


ApplicationController:

派生コントローラー:

Unityコントローラーファクトリー:

Global.asax.csサンプル:


私はUnityを初めて使用するので、何か間違ったことをしたのかもしれません。

ありがとう、亜美。

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

c# - Unity インターセプトと例外

現在、多くの iterfaces とその実装がすべて unity で作成されているという問題に取り組んでいます。これらのクラスには、通常のベースで例外をスローするいくつかのメソッドが含まれており、メソッドで発生したすべての例外をキャッチして別の場所で処理できるように、これらのクラスの周りに動的プロキシを作成したいと考えていました。

Unity で遊んでいるので、Unity Interception を使用してこのようなことができるのではないかと考えています。

つまり、TransparentProxyInterceptor を作成し、これらのメソッドの呼び出しの周りに try-catch ブロックをラップします。これはまったく可能ですか、それとも間違った方向に進んでいますか? ありがとう

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

c# - CALで、モジュールインスタンスへの参照を取得するにはどうすればよいですか?

私はCALを使用してこのアプリケーションを持っています。すべてのモジュールは、それぞれに実装されModuleBaseているような抽象メソッドを持つ特別なクラスから派生しています。ApplySecurity

OKブートストラッパーにモジュールをロードし、呼び出した後、ロードされたすべてのモジュールにアクセスして、このメソッドbootstrapper.Run()を呼び出します。ApplySecurity

私はこれを試しました:

しかし、これはモジュールの新しいインスタンスを作成しているので、すでに初期化されているものを参照したいと思います。

私は十分に明確になっているといいのですが、

テオドール。

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

asp.net-mvc - ベスト プラクティス - Asp.net MVC の階層間で UnityContainer を共有しますか?

MVC Web アプリの global.asax ファイルで、実行時に構成情報を取得する UnityContainer があります。

また、解決を手動で実行できるように、このコンテナーにアクセスする必要がある別のアセンブリ内のサービスもあります。

2つを共有するにはどうすればよいですか?データ アセンブリと MVC の間の参照は必要ありませんが、Web アプリによって構成された UnityContainer にデータ アセンブリがアクセスできるようにしたいと考えています。

この状況で他の人が何をしているのか気になります。

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

asp.net-mvc - MVC/Unity - カスタム FilterAttributes に依存関係を挿入する方法は?

HandleErrorAttribute拡張する習慣がありますFilterAttribute

Unity がコントローラーの依存関係自体を注入すると同時に、この属性に依存関係を注入するにはどうすればよいですか?

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

.net - Unity 初心者向けの質問

初めて Unity を使用しようとしていますが、噛むことができないほど噛んでしまったのではないかと思います。いくつかの抽象型を持つ基本ライブラリと、その上に具象型を持ついくつかのビジネス シナリオ固有のライブラリを持つ n 層アプリケーションがあります。例: 抽象型リードには 2 つの実装があります。1 つは NewAutomotiveLead という名前の NewAutomotiveLibrary にあり、もう 1 つは AutomotiveFinanceLead という名前の AutomotiveFinanceLibrary にあります。基本ライブラリ内には、Lead などの基本型でロジックを実行するアダプターのセットがあります。

Unity を初めて使用してインターフェイス ILeadDuplication を返そうとしています。このインターフェイスは、解決されると NewAutomotiveLeadDuplication または AutomotiveFinanceLeadDuplication のインスタンスを返し、ILeadDuplication で resolve を呼び出し、"NewAutomotive" または "AutomotiveFinance" のいずれかの文字列値を渡します (コンテナーで RegisterType が呼び出されたときにマップされた名前)。そのようです:

注: これは説明のためのものです。ライブラリは ILeadDuplication の concreate クラスについて何も知らないため、実際の登録は構成ファイルで行う必要があります。

これはすべてうまく機能しますが、さらに一歩進める必要があります。resolve を呼び出すときに、NewAutomotiveLead または AutomotiveFinanceLead の基本型である Lead 型の引数を渡すことができる必要があります。

Unity が、「GrossMonthlyIncome」などの具体的なインスタンス AutomotiveFinanceLead に固有のプロパティを魔法のように見て、それを新たに作成された AutomotiveFinanceLeadDuplication インスタンス プロパティ GrossMonthlyIncome に割り当てる可能性があるかどうかを知る必要があります。

生成されるインスタンスとマップされるプロパティがなじみのないものであっても、ベース ライブラリの ILeadDuplication のインスタンスに対して汎用的なロジック セットを実行できるようにしたいと考えています。

ありがとう!