問題タブ [ioc-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.
c# - カスタム IOC コンテナでコンストラクタ パラメータを使用してインスタンスを解決するにはどうすればよいですか?
コントロールコンテナの独自の反転を構築しようとしています。現在、オブジェクトとそのタイプをディクショナリに保存し、要求されたときに参照を解決しています。しかし、参照または新しいインスタンスを解決できるようにしたいと考えています。Activator クラスを使用して新しいインスタンスを作成できます。しかし、解決するオブジェクトのコンストラクターが 1 つ、2 つ、または任意のパラメーターを取る場合はどうなるでしょうか。
たとえば、次のようなことが言えるようになりたいです。
そしてそれを次のように解決します
MyFoo は指定されたパラメータProxyでインスタンス化され、 MyBar はProxyとDataThingでインスタンス化されます。
それを実現するために解決は何をしなければなりませんか?
inversion-of-control - Castle Windsor は、複数のインターフェイスを実装するクラスにどのように応答しますか?
たとえば、ICustomerService と IOrderService の 2 つのインターフェイスがあり、それぞれに GetCustomer、GetOrder などの関数がいくつかあります。
1 つのクラスで両方のインターフェイスを実装する必要があります: Server.
キャッスル ウィンザーはこれにどのように対応しますか? そもそも可能ですか?2 つのインターフェイスのいずれかに基づいてサーバー オブジェクトを解決すると、同じオブジェクトが得られますか? パラメーターに両方のインターフェースを持つコンストラクターがあるとどうなりますか? まだ1つのオブジェクトが構築されていますか。
LifeStyle がデフォルトの Singleton のままであると仮定します。
inversion-of-control - IOC コンテナーを使用することの長所と短所は何ですか?
IOC コンテナーを使用すると、アプリケーションの速度が低下します。これは、ほとんどのコンテナーが内部で反射を使用するためです。また、コードを理解しにくくすることもあります (?)。明るい面で。より疎結合のアプリケーションを作成し、単体テストを容易にするのに役立ちます。IOC コンテナーを使用する/使用しないことについて、他に長所と短所はありますか?
inversion-of-control - IoC とイベント
IoC、インターフェイス、およびイベントを調整するのに非常に苦労しています。本を書かずにこれを説明できるか見てみましょう。
私はIoCを始めたばかりで、Springで遊んでいます。EF などよりもずっと前に構築された単純なデータ層があります。クラスの 1 つは、いくつかのメソッドとイベントを持つ DBProcedure です。
「実際の」DBProcedure クラスが実装する IDBProcedure インターフェイスを作成しました。TDD のやり方では、「実際の」DBProcedure クラスを、テスト用に同じインターフェイスを実装する別のクラスに交換できるようにしたいと考えています。私にとって、これは IDBProcedure インターフェースが私のデータレイヤーとは異なる名前空間/プロジェクトで定義されるべきであることを意味しますよね?
ただし、DBProcedure はいくつかのイベントを発生させることができ、それらのイベントはカスタム EventArgs 派生クラスを提供します。これは、EventArgs クラスもデータ層の外で定義する必要があるということですか? インターフェイスを機能させるためのように見えますが、データ層が広がるため、それは悪いように思えますか?
一方、私は間違った考えを持っているかもしれません.「実際の」クラスを使用していなくても、インターフェイスとイベントの定義を取得するためにテストしているときに、データ層の名前空間を含めても大丈夫ですか?
nhibernate - NHibernateでのPerWebRequestライフスタイルの設定
私はかなり基本的なNHibernateのセットアップを持っています。コードでIoCを実行するために、CastleWidnsorなどの特別なものは使用していません。ライフスタイルをPerWebRequestに設定するだけですが、コードをさかのぼってIoCライブラリを使用するように更新しないと、これを行う方法がわかりません。
設定ファイルでこれを行う方法はありますか?
c# - NInject: カーネルへの参照はどこに保管していますか?
新しい Web アプリケーションで NInject を使用していますが、不明な点が 2 つあります。
GC がすべてのインスタンスを収集しないようにするために、カーネル (セッション/アプリ変数) への参照を保持する必要はありませんか? たとえば、.Using() を指定して Kernel オブジェクトが収集された場合、すべての「シングルトン」も収集されませんか?
Kernel オブジェクトへの参照を維持する必要がある場合、WithArguments() に渡された引数を変更できるようにするにはどうすればよいですか、またはそれは不可能です。
c# - MicrosoftUnity-xmlへのコード
次と同じ結果を達成するために、Enterprise Library4.1のMicrosoftUnityアプリケーションブロックで使用する必要のあるXML構成を誰かが提供できますか?
したがって、これの代わりに:
私はこれを持っているでしょう:
XML構成ファイルを使用します。
inversion-of-control - キャッスルウィンザーでコンポーネントを上書きする方法は?
特定の winsor-container で (デフォルトの) 実装を再定義したいと考えています。それがOverWriteの目的ですか?しかし、うまくいきません。
他のアイデアはありますか?
乾杯、ラース