問題タブ [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.
asp.net-mvc - Ninject vs Unity for DI
ASP.netMVCを使用しています。
これらのどれが最高のDIフレームワークNinjectまたはUnityであり、その理由は何ですか?
unity-container - 実際の IoC コンテナ ライブラリを非表示にするには?
選択した IoC コンテナー ライブラリ (Unity) からすべてのコードを分離したいと考えています。そのために、Register() と Resolve() を公開する IContainer インターフェイスを作成しました。IContainer を実装し、実際のコンテナーをラップする UnityContainerAdapter というクラスを作成しました。したがって、UnityContainerAdapter が定義されているアセンブリのみが Unity ライブラリについて認識します。
私の孤立思考に漏れがあります。Unity は、依存関係を注入する場所を知るために、型のメンバーの属性を検索します。私が見たほとんどの IC ライブラリもそれをサポートしています。私が抱えている問題は、その機能を使用したいのですが、クラスが Unity 固有の属性に依存することを望まないことです。
この問題を解決する方法について何か提案はありますか?
理想的には、独自の [Dependency] 属性を作成し、それをコードで使用します。しかし、実際のコンテナに、自分の属性ではなく自分の属性を検索するように指示する必要があります。
inversion-of-control - Microsoft Unity を使用したプログラムによるプロパティ インジェクション
私は自分のソリューションでコンストラクター注入を使用していますが、この 1 つのクラスには、不変の依存関係があるコンストラクターに渡したくないプロパティがあります。
ILogger を取得し、設定したい FileName プロパティがあり、コンストラクターで依存関係を設定しているとします。タイプを登録すると同時に、デフォルトの接続文字列を渡すにはどうすればよいですか。
それを行う簡単な方法があることを願っています-できればプロパティを属性で装飾することなく、しかし属性を使用してセットアップが簡単であれば、それはクールだと思います:)
問題は、Unity を使用して、コンストラクター注入も使用するオブジェクトにプロパティ値を注入するにはどうすればよいかということです。
更新:タイトルで言及しましたが、テキストの本文で詳しく説明するのを忘れていました-構成ファイルではなく、これらの依存関係を手動で(コードで)設定したいです。
c# - UnityContainer-Tを動的にResolveメソッドに渡す
結果のIEnumerableofTを取得できるように、入力したISearchableインターフェイスを作成しました。
さまざまなドメインオブジェクトに対してISearchableを実装するサービスがいくつかあります...
タイプに基づいてISearchableを(Unityを介して)解決したいのですが、それを機能させるのに苦労しています...
以下はコンパイルされませんが、うまくいけば、私が達成しようとしていることのアイデアを与えるでしょう。
ありがたいことに助けてくれました!
ありがとう、
アンディ
asp.net - Unity のコール コンテキストごとのシングルトン (Web リクエスト)
数日前、ASP.Net のスレッド化で問題が発生しました。Web リクエストごとにシングルトン オブジェクトが必要でした。私は実際に私の仕事の単位にこれが必要です。ID マップがリクエスト全体で有効になるように、Web リクエストごとに作業単位をインスタンス化したかったのです。このようにして、IoC を使用して独自の IUnitOfWork をリポジトリ クラスに透過的に注入し、同じインスタンスを使用してエンティティをクエリしてから更新することができます。
Unityを使っているのでPerThreadLifeTimeManagerを間違えて使ってしまいました。ASP.Net スレッド モデルは、私が達成したいことをサポートしていないことにすぐに気付きました。基本的に、スレッドプールを使用してスレッドをリサイクルします。つまり、スレッドごとに 1 つの UnitOfWork を取得します!! ただし、私が望んでいたのは、Web リクエストごとに 1 つの作業単位でした。
少しグーグルで調べたところ、この素晴らしい投稿がありました。それがまさに私が望んでいたことです。達成するのが非常に簡単だった団結の部分を除いて.
これは、統一のための PerCallContextLifeTimeManager の私の実装です。
そしてもちろん、これを使用して、次のようなコードで作業単位を登録します。
誰かの時間を少し節約できることを願っています。
wpf - Prismのresolve<>メソッドで起こっている魔法を誰かが説明できますか?
次のInitialize()メソッドを持つCustomersModule.csがあります。
コンテナから解決するクラスは次のようになります。
TestWhateverクラスは、私が作成した単なるダミークラスです。
それでも、私が登録したことがなくても、コンテナは問題なく解決 されます。また、コンテナはどういうわけかTestWhateverを見つけてインスタンス化し、に注入します。CustomersPresenter
CustomersPresenter
コンテナが非常に自動であると明示的に述べているPrismのドキュメントのどこにも見つからなかったので、これに気付いて非常に驚きました。
ですから、これは素晴らしいことですが、私が知らないコンテナは他に何をしているのでしょうか。つまり、私が知らない他に何ができるのでしょうか。たとえば、他のモジュールからクラスを注入できますか?モジュールがロードされた場合、コンテナはそれらを注入し、そうでない場合はnullを注入しますか?
wpf - Prismのモジュールを大まかに参照して、存在できるようにする、または存在できないようにするにはどうすればよいですか?
このスタックオーバーフローの質問で、 Prism / Unityは思ったほど分離されていないことを学びました。たとえば、menuManagerをコンストラクターに注入するこのクラスがある場合、このクラスが実際にどこかに存在することを確認する必要があります(クラスを含む.dllをプルするだけで、コンテナがそれを処理します。たとえば、その場所にnullを挿入します):
しかし、私はそれに対処することができます:アプリケーションはMenuModuleなしでは実行できません(または、提案されたように、アプリケーションが壊れないようにするだけのNullMenuModuleを持つことができます)。
ただし、私が構築しているアプリケーションでは、MenuModuleにMenuManagerクラスがあり、すべてのモジュールは、メニューに必要なすべてのものをMenuManagerに登録する必要があります。ただし、 MenuModuleを交換できるようにしたいです。たとえば、InfragisticsMenuModuleとTelerikMenuModuleなどがあります。
ただし、CustomersModuleなどにいる場合、TelerikMenuModuleを使用するには、それを参照する必要があります。また、InfragisticsMenuModuleを使用する場合は、それを参照する必要があります。
では、すべてのモジュールを新しい参照で再コンパイルせずに、TelerikMenuModuleをInfragisticsMenuModuleと「ホットスワップ」するにはどうすればよいでしょうか。たとえば、これを置き換えたい場合は次のようになります。
これとともに:
アプリケーションを再起動するだけで、新しいInfragisticsMenuModule.dllで実行され、TelerikMenuModule.dllが存在しなくなったことを通知しません。
wpf - PrismのIContainerとIUnityContainerの違いは何ですか?
さまざまなソースから取得したコードを含むPrismプロジェクトがあり、すべてが非常にうまく機能していますが、一部のモジュールで注入していることに気付きました
そして他のモジュールでは私は注入します
IContainerにはコンポーネント、追加、および削除のみがあるようですが、IUnityContainerには数十のメソッドがあります。
IContainerをIUnityContainerに頻繁に変更して、後者のresolveメソッドを使用できるようにします。これら2つの違いは何ですか?なぜIContainerを使用したいのですか?