問題タブ [castle-windsor-3]
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.
scope - キャッスル ウィンザーで特定のカスタム スコープ ライフスタイルを「BeginScope」する方法は?
カスタム スコープ アクセサー(単に DefaultLifetimeScope を返す) を作成して、カスタム スコープ ライフスタイルを追加できるようにしました。コンポーネントは次のように登録されます。
しかし、新しい CustomScope スコープ/ライフタイムを実際に開始する方法については途方に暮れています。ドキュメントは、を使用して新しいスコープを開始することを示しています
しかし、私の目標は、一般的な登録ではなく、特定のスコープを作成/開始/開始することです。LifestyleScoped()
新しいスコープは、CustomScope に明示的に登録されたコンポーネントにのみ影響する必要があります。一般的なスコープのコンポーネントまたは他のスコープのライフスタイルに対して登録されたコンポーネントではありません。
(マイ カスタム スコープ) スコープ/有効期間を開始するプロセスは何ですか?
関連するドキュメントにリンクしてください。なかなか見つからなかったので質問です。コードは Castle Windsor 3.3 を使用しています。
バックグラウンド:
私は Autofac から来ており、EF コンテキストで UoW を確立するために、 Instance Per Matching Lifetime Scopeに相当するものを探しています。「リクエストごとに」複数のUoWが存在する可能性があり、リポジトリごとに異なるUoWが存在する可能性があります-将来的にはネストのサポートも希望します。
UoW パターンの作成について話している記事は数多くありますが、[すべて] HTTP や WFC リクエストなどのコンテキストに関連付けられています (誤って IMOHO)。これは、この質問の対象ではありません。私は特に、コール グラフを流れて using ブロックの「内部に存在する」カスタム スコープを開始する方法に関心があります。
ノート:
(BoundTo()
およびLifestyleBoundTo()
/ LifestyleBoundToNearest()
) ライフスタイルはオブジェクト グラフに反して機能し (タイプを変更する必要があります)、そのようなものに切り替えることは厳密にはこの質問に対する解決策/回答ではありません。しかし、彼らのために良いケースを作ることができれば..
property-injection - ウィンザー城 : プロパティ注入
ExtendedMembershipProviderから派生したCustomMembershipProviderを実装しました。IUserServiceは、指定された資格情報の検証に使用されるCustomMembershipProviderの依存関係です。これは Web.Config で構成されます。
CustomMembershipProviderにはパラメーターのないコンストラクターが必要なため、コンストラクターを介してIUserService実装を注入することはできません。
そこで、プロパティ注入を導入することを考えました。CustomMembershipProvider のパブリック プロパティとして IUserService を作成しました。
この登録専用の別インストーラーを書きました
それは機能せず、ValidateUser の呼び出し時にUserServiceは常に NULL でした。
そして、寄稿者を試しました。
そして、コンテナーをブートストラップするコントリビューターを登録します。
CustomMembershipProvider のIUserServiceプロパティを挿入する方法を教えてください。
castle-windsor - キャッスル・ウィンザーのライフスタイル問題
私のプロジェクトでは、ジョブ スケジューリング ライブラリである hangFire を実装しています。
このリンクで直面しているのと同じ問題に直面しています
ただし、次のように置き換えLifestylePerWebRequest()
た後HybridPerWebRequestTransient()
も、同じエラー メッセージが表示されます。
HttpContext.Current が null です。PerWebRequestLifestyle は ASP.Net でのみ使用できます
私の依存関係インストーラーのいくつかの行は次のとおりです。
これは、ウィンザー コントローラー ファクトリーのコントローラー インストーラーです。
他の情報が必要な場合はお知らせください。
interceptor - Castle Windsor インターセプターからメソッドのカスタム属性を取得する
Castle インターセプター内のメソッドに適用されたカスタム属性にアクセスしようとしていますが、メソッド Attribute.GetCustomAttribute() が null を返します。
「MyAttribute」を取得するにはどうすればよいですか?
PS私はCastle.Core 3.3.3を使用しています
dependency-injection - 複数の MVC プロジェクトでの Sitecore 8.1 MVC キャッスル winsdor の問題
Sitecore 8.1 MVC 、Castle Windsor、および Glass Mapper v3.5 を使用して 1 つのソリューションを実装しました。このソリューションには 2 つの MVC プロジェクトがありますが、複数の Web サイト (Glass_Sample、Glass_Sample_1 など) が含まれる場合があります。
Glass_Global : このプロジェクトでグローバル/共通機能 (ウィンザー城) が実装され、他の Web サイト ( Glass_Sample ) で使用されているのはそのためです。ウィンザー城の実装をこのプロジェクトに入れました。
Glass_Global.config ファイルを App_Config/Include フォルダー内に配置します。
Glass_Sample : これは、このソリューションで開始する最初の Web サイトになります。このプロジェクトに CastleWindsorConfig.cs ファイルを追加しました。
この Glass_Sample Web サイトのホームページ レイアウトでコントローラー レンダリングを使用していますが、Web サイトを参照すると次のエラーが発生しました。
何か見逃しましたか?
コントローラー、インターフェイスを Areas フォルダー内に配置しました。それがこのエラーの根本的な原因ですか?
なにか提案を?
PS
現在動作しています。実際に、新しい Glass_Sample.config ファイルを作成し、Glass_Sample/App_Config/Include フォルダー内に配置しました。
現在、このソリューションには複数の Web サイトが含まれている可能性があります。このソリューションに新しい Web サイトを追加するには、次のアプローチに従う必要があります。
このソリューションに新しい MVC プロジェクトを追加し、必要なサイトコア アセンブリを追加します
IIS に移動し、新しいアプリケーション ( GlassSampleSite1 ) を追加して、 GlassSample Web サイト フォルダーからsitecoreフォルダー/dlls をコピーします。
3. ソリューションに移動し、 GlassSampleSite1プロジェクトを右クリックして、公開ターゲットを新しく作成したインスタンスGlassSampleSite1/Websiteフォルダーに設定し、公開します。
これは機能しますか?
castle-windsor-3 - インターフェイスの祖先を指定して、Castle Windsor にデフォルト インターフェイスを登録するにはどうすればよいですか?
私は次のものを持っています:
私ができるようにしたいのは、Castle Windsor が自動的にすべてのペアを見つけられるようにすることIDescendantX
ですDescendantX
。手動で指定する必要はありません。これは可能ですか?
私はもう試した:
しかし、これはデフォルトのインターフェースを見つけません。(正しい用語で質問を表現するのに問題があるため、すでにこれに回答しているトピックを見つけることができませんでした。重複している場合は申し訳ありません...)