問題タブ [castle-windsor]

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

visual-studio - IoC/DIを使用するときに必要なライブラリをbinフォルダーに入れる方法

Castle Windsorを使用して依存性注入を行っています。具体的には、現在DIによってロードされているインターフェイスにDALレイヤーを抽象化しました。

プロジェクトが開発およびデプロイされると、すべての.binファイルが同じ場所に配置されますが、Visual Studioで開発している間、依存関係が挿入されたプロジェクトの.binファイルをスタートアッププロジェクトのbinに取得する唯一の方法を確認できます。フォルダは、それをコピーするビルド後のイベントを持つか、ファイルをプルするためにDALプロジェクトへの手動参照を入れるかのいずれかです。

私はどちらの解決策にも完全にわくわくしているわけではないので、この問題を解決するための「標準的な」方法があるかどうか疑問に思いました。

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

c# - アスペクト指向プログラミングの適用

私は、セキュリティ、ロギング、検証などの分野横断的な問題に対して、いくつかの基本的な AOP スタイルのソリューションを使用してきました。Boo ベースの DSL を使用してすべてを適用し、コードを属性からきれいに保つことができるため、私のソリューションはCastle Windsorと DynamicProxyを中心に展開しています。 . 週末に、「より良い」ソリューションであるはずのPostSharpを調べるように言われました。私は PostSharp をざっと見てきましたが、属性の使用法に気が進まなかったのです。

両方のソリューションを試してみて、その経験を共有したい人はいますか?

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

.net - Castle Windsor: xml にない工場施設への呼び出しをどのように追加しますか?

XML を使用してファクトリのメソッドからの参照を解決するよう Castle Windsor に指示する方法は知っていますが、Container.AddComponent() インターフェイスを介してプログラムで解決できますか? そうでない場合、コードからそれを行う他の方法はありますか?

編集: 混乱があるようですので、明確にさせてください。コードで次のことを行う方法を探しています:

( windsor と spring.net の工場サポートに関するこの codebetter 記事から)

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

.net - Windsor Container: オブジェクトを強制的に破棄する方法は?

Windsor Container に登録されている IDisposable を実装するオブジェクトがあり、それを破棄して、Dispose メソッドが呼び出され、次に Resolve が呼び出されたときに新しいインスタンスをフェッチするようにしたいと考えています。

する

Dispose() をすぐに自動的に呼び出しますか? それともする必要がありますか

リリースが正確に何をするかについてのドキュメントには何も見つかりませんでした

編集: 私が実行したテストの結果については、以下の回答を参照してください。問題は、シングルトン ライフサイクルを持つコンポーネントのインスタンスをコンテナに強制的にリリースさせるにはどうすればよいかということです。これは 1 か所で行うだけで済みますが、カスタム ライフサイクルを記述するのは非常に重いように思えます。それを行う組み込みの方法はありませんか?

0 投票する
6 に答える
14990 参照

.net - Castle Windsor: コードからコンストラクタ パラメータを指定する方法は?

次のクラスがあるとします

次のように、xml 経由で城のウィンザーにそのインスタンスを登録できます。

まったく同じことをコードで行うにはどうすればよいですか? (注意、コンストラクターのパラメーター)

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

c# - 型の既存のインスタンスを Windsor Container に登録できますか?

Windsor IOC コンテナーでは、コンテナーで作成する代わりに、既にインスタンスを取得している型を登録することはできますか?

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

.net - Windsor Container: Code と Xml での登録

Windsor/Microkernel について私が読んだことから、理論的には、xml ファイルを使用してコードで実行できることはすべて実行可能です。実際のところ、間違っていたら訂正してください。Windsor 層の主な貢献は、Microkernel が既に実行できることに対して xml 構成を追加することのようです。

ただし、コードでもう少し複雑な機能を実装する方法 (つまり、デフォルトのコンストラクター引数値を割り当てる方法) を見つけるのに最近苦労しています。現在、本番リリースで xml を使用する予定ですが、テスト用のコードでコンポーネントを登録していますが、これはかなり問題になっています。これは、彼らのドキュメントの不幸な状態と、私が見つけることができる唯一の記事がxml登録に焦点を当てているという事実によって助けられていません.

物事をコードに登録する方法をリストしているソースを知っている人はいますか (できれば xml に相当するものを使用してください)。その存在を抜きにして、Castle Windsor/Microkernel の xml 以外の重要な使用があるオープン ソース/サンプル プロジェクトを知っている人はいますか?

0 投票する
6 に答える
5132 参照

.net - Windsor Interceptors AOP & キャッシング

Castle Windsor's Interceptors を使用してデータをキャッシュし、asp.net サイトのスケーリングを支援することを検討しています。

誰かがこれを行うことについて考え/経験を持っていますか?

軽微な説明: 私の意図は、Windsor を使用して「高価な」呼び出しをインターセプトし、キャッシング自体を MemCacheD または Velocity (または別の分散キャッシュ) に委任することでした。

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

.net - Castleを使用してテストプロジェクト(TFS 2008)で依存性注入を行うにはどうすればよいですか?

テストプロジェクトでは、依存性注入にCastleWindsorを使用しています。'Repository'クラスの1つにインスタンスを作成しようとしています。「自分のマシンでは正常に動作します」が、TFSでナイトリービルドを実行すると、テストで上記のクラスを読み込めません。

xml構成:

新しいビルドをキューに入れると、次のメッセージが表示されます。

クラスExample2008.Test.ActiveProductRepositoryTestのインスタンスを作成できません。エラー:System.Configuration.ConfigurationException:タイプ名Example2008.Repository.LALALALALA、Example2008.Repositoryが見つかりませんでした。

Castle.Windsor.Installer.DefaultComponentInstaller.ObtainType(String typeName)Castle.Windsor.Installer.DefaultComponentInstaller.SetUpComponents(IConfiguration [] configuration、IWindsorContainer container)Castle.Windsor.Installer.DefaultComponentInstaller.SetUp(IWindsorContainer container、IConfigurationStore store)Castle.Windsor .WindsorContainer.RunInstaller()Castle.Windsor.WindsorContainer..ctor(IConfigurationInterpreterinterpreter)Example2008.Test.ActiveProductRepositoryTest..cctor()in d:\ Code_Temp \ Example Project Nightly \ Sources \ Example2008.Test \ ProductRepositoryTest.cs:line 19

このメッセージから、私の構成は正しいようです(具象クラス「LALALALALA」をインスタンス化したいことがわかるので、xml構成は明らかに正しく赤くなっています)

依存関係も正しく設定されていると思います(ソリューションをクリーンアップして再構築しても、ローカルで機能するため)。

何かご意見は?

(ちなみに、VS2008、TFS 2008.Net 3.5、Castle 1.03を使用)

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

oop - IoC、コンテナはどこに置く?

私が取り組んでいるペットプロジェクトにキャッスルウィンザーを使用しています。新しいオブジェクトを作成するには、コード内のさまざまな場所で IoC コンテナーを呼び出す必要があることに気付き始めています。このコンテナーへの依存関係により、コードの保守が難しくなります。

この問題を解決するために私が使用した2つの解決策があります

オブジェクトを作成する必要があるアプリケーションの部分に挿入できるコンテナのラッパーとして抽象ファクトリを作成しようとしました。これは機能しますが、キャッスルが独自のコンテナーを依存関係として注入するのに苦労するため、いくつかの欠点があります。そのため、手動で行う必要があります。この種のことは、IoC コンテナーの目的全体を無効にします。

メインの applicationcontroller クラスを使用して IoC コンテナーをラップし、中央のファクトリー/リポジトリーとして機能させました。これは非常に成功しましたが、このクラスは大きくなりすぎて、中心的な神のオブジェクトのように振る舞い、他のほとんどすべてのオブジェクトがそれを参照しています。

どちらのソリューションも機能しますが、どちらにも欠点があります。他の人が同じ問題を抱えていて、より良い解決策を見つけているかどうか、私は興味があります.


編集 問題は、オブジェクト B に依存するオブジェクト A ではありません。ここでは、通常、コンストラクター注入を使用するだけで、すべてが機能します。時々、タイプ A のオブジェクトが、存続期間中に可変数のタイプ B の他のオブジェクトを作成する必要がある場合があります。これを行う方法がわかりません。

@ブレア・コンラッド: メンテナンスの問題は今のところ深刻ではありません。いくつかのクラスは、container.Resolve<> を呼び出すコンテナー オブジェクトに依存していました。また、インフラストラクチャと思われるものに応じてコードを作成したくありません。私はまだ試している途中なので、このプロジェクトで ninject から城に切り替えるときに、多くのコードを変更する必要があることに気付きました。

@花:うーん。私はあなたの拳のソリューションが好きです。私が試した両方のソリューションから機能するものを組み合わせています。私はまだオブジェクトについて考えすぎていて、インターフェイス/責任について十分に考えていなかったと思います。専用の工場を試してみましたが、コンテナを舞台裏で使用してオブジェクトを作成したいと思いますが、コンテナをきれいな方法でオブジェクトにDIする方法がわかりませんでした。