問題タブ [property-injection]
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# - 作成を制御しないクラスにプロパティを注入する方法
autofac を使用してIServiceManagerプロパティをこのクラスに挿入するにはどうすればよいですか? これは、リソース文字列を取得するために を呼び出すときに呼び出されるカスタム リソース プロバイダー ファクトリ クラスですHttpContext.GetGlobalResourceObject("", "MyResource")
。
c# - オブジェクトをページ プロパティに自動ロードする方法
まず、これを実行できることは知っていますが、セットアップや実装に関与していないため、どのように実行されるかわかりませんでした。
以前の仕事で、Web アプリケーション (MVC または Web アプリケーション) のサポートを手伝っていたとき、いつもの EF デザイン パターンがありました。しかし、EF オブジェクトを使用するときは、ページ/コントローラーでプロパティを宣言するだけで、リポジトリ/サービスにアクセスできました。
宣言後に明示性を宣言する限り、何もする必要はありませんでしたvar prop1 = IOC.Resolve<Type>;
。自動入力されます。これは依存性注入だと思いましたが、これを可能にする方法についての記事は見たことがありません。
どんな助けでも素晴らしいでしょう。
編集 2014-04-13
このような Global.asax ファイル内でプロパティ インジェクションを実行しようとしました。
私はif....
ロジックを実行しようとしApplication_BeginRequest
ましたが、どちらも成功しませんでした。
App.cs
DomainInstaller.cs (ほぼすべてのインストーラー クラスがこの方法でセットアップされます):
だから私は自分の問題を見つけたかもしれないと思いますが、ページとマスターページの両方にEFデータフレームワークから注入する必要があるプロパティが含まれているため、ソリューションを実装する方法がわかりません。以下は MVC 実装の例ですが、Page オブジェクトと MasterPage オブジェクトには、コントローラーのように使用できる直接共通の派生インターフェイスがありません。
別のプロジェクト、MVC パターン:
このインストーラーを MVC から WebForms に変更する方法はありますか? MasterPage と Page の両方が、Windsor Container から注入する必要があるプロパティを持つことを意図しています。
structuremap - 外部依存関係を持つ属性クラスの構造マップ プロパティ インジェクションが機能しない
私は構造マップが初めてです。カスタム検証クラスにプロパティ インジェクションを使用すると、プロパティは常に null になります。私は何かが欠けていると思います。この点での助けは高く評価されます。System.Web.Mvc.DependencyResolver.Current.GetService(); を使用したくありません。AddressInfoValidator で logger のインスタンスを取得します。依存関係を注入するために、MVC 5、FluentValidation.Mvc(5.1.0.0)、および構造マップ(2.6.3.0) を使用しています。シンプルなログ ファサードと Myloger クラスがあります。
バリデーターの実装は次のとおりです。以下のクラスが属性として使用されるため、プロパティ注入を使用しました。
アドレス モデルは次のとおりです。
global.asax で起動時にアプリケーションから呼び出される構造マップ レジストリ:
c# - Castle Windsor でのプロパティ注入による循環依存
ウィンザーで循環依存関係が必要です。これは、再帰的なアプローチのために意図的に行われます。モジュール A はモジュール BF を呼び出し、モジュール B はノードのツリーのためにモジュール A にコールバックする必要があります。
とにかく、このためコンストラクター注入を使用できないことはわかっています。そこで、IEnumerable<IModule> を取得するために、プロパティ インジェクションを使用してモジュール A をセットアップしました。
すべてのタイプを登録しましたが、モジュール A を解決するときに、Windsor がプロパティを Null に設定しています (例外をスローします)。DependsOn を使ってみたのですが、それはコンストラクタの引数にしか当てはまらないようです。
必要な依存関係サイクルを持つことができるように、Windsor にモジュール BF のコレクションをプロパティ インジェクションを介してモジュール A に解決させるにはどうすればよいですか?
これが最上位モジュール (モジュール A) と IModule です。
そして再帰的なサブモジュール:
そして私の登録:
私が言ったように、プロパティには適用されないように見える DependsOn と、効果のない PropertyRequire を試しましたが、それでも null が渡されました。
これらのコンポーネントをサードパーティ ツールに登録しているため、Container.Resolve コードにアクセスできないことに注意してください。
ありがとう!
編集
私が期待するもの:
Windsor は CompositeModule を解決し、デフォルトの ctor を使用してインスタンスを作成します。名前を付けます。
Windsor は、列挙可能な IModules であるプロパティを満たします。
CompositeModule を数えずに 6 つの IModule を認識し、それらをコレクションにインスタンス化しようとします。
6 つのモジュールの 1 つである CheckChildrenModule には、CompositeModule の名前付きインスタンスが必要であることがわかります。
手順 1 で作成された CompositeModule の名前付きインスタンスを使用して、CheckChildrenModule の ctor 依存関係を満たします。
これで IModules のコレクションを終了し、手順 2 から CompositeModule の InnerModules プロパティに渡すことができます。
それを実現する方法がわからないだけです。
asp.net-mvc - プロパティ注入により StackOverflowException が発生する
AutoFac は初めてで、AutoFac に登録したインスタンスをプロパティに自動挿入しようとしています。
例外を引き起こす行: builder.RegisterType().PropertiesAutowired();
プロバイダーの ISocialAppUnitOfWork を取得したいと思います。
現時点で何が起こっているのかわかりませんが、助けていただければ幸いです。
c# - コントローラとエンティティにコンテキストを挿入する Autofac
私は EF4.3 で構築された MVC アプリを持っており、DbContext を渡す代わりにエンティティに挿入することで、いくつかのリファクタリング/クリーンアップを行おうとしています。私はすでに Autofac を使用してコンテキストをコントローラーに渡していますが、これはうまく機能します。ただし、AutowireProperties を使用してエンティティの DbContext プロパティを設定しても機能しません (プロパティを設定していないようです)。これが私のセットアップです:
Database.Appointment には、次のようなパブリック プロパティがあります。
簡単な答えは、コントローラーで http 要求ごとにコンテキストを設定し続け、同じコンテキストを DbContext プロパティを持つ EF エンティティに設定することです。
property-injection - ウィンザー城 : プロパティ注入
ExtendedMembershipProviderから派生したCustomMembershipProviderを実装しました。IUserServiceは、指定された資格情報の検証に使用されるCustomMembershipProviderの依存関係です。これは Web.Config で構成されます。
CustomMembershipProviderにはパラメーターのないコンストラクターが必要なため、コンストラクターを介してIUserService実装を注入することはできません。
そこで、プロパティ注入を導入することを考えました。CustomMembershipProvider のパブリック プロパティとして IUserService を作成しました。
この登録専用の別インストーラーを書きました
それは機能せず、ValidateUser の呼び出し時にUserServiceは常に NULL でした。
そして、寄稿者を試しました。
そして、コンテナーをブートストラップするコントリビューターを登録します。
CustomMembershipProvider のIUserServiceプロパティを挿入する方法を教えてください。
c# - Autofacでプロパティインジェクションを解決するには?
Autofac を使用してコントローラーにサービスを挿入する MVC Web アプリがあります。
問題:サービスでプロパティ インジェクションを実行しようとしましたが、失敗しました (プロパティは常に null です)。
私が期待すること: プロパティが Autofac によって適切に (null ではなく) 初期化されることを期待しています。
例:
- AliasesService を IAliasesService としてコントローラーに挿入しようとしています。
- AliasesService は MailService に依存します。
- MailService は AliasesService のプロパティです。
- AliasesService は適切にインスタンス化され、MyController に渡されます。
- MailService が適切にインスタンス化されておらず、AliasesService のプロパティに設定されていません
コントローラ:
Global.asax:
AliasesService:
言及する価値があります:
- コントローラーのプロパティ インジェクションを実行しようとすると、期待どおりに動作します
- コンストラクター注入は機能しますが、プロパティ注入が必要です。
成功しなかった他のこと:
1
2
最小限の例:
代替ソリューション:
最小限の例では、Autofac は機能しますが、コントローラーのコンテキストでは、期待どおりに機能させることができなかったため、時間を無駄にしたため、使用を断念しました。今のところ、Castle Windsor を使用していますが、必要なことはすべて実行してくれます。サポートに感謝します。
asp.net-web-api2 - Asp.Net Web Api および Autofac とカスタム認証属性の問題 (プロパティ インジェクション)
私は Autofac を使用して、うまく機能しているすべてのプロジェクトの依存関係を注入しています。これで、カスタム認証属性が追加されました (OWIN や ID などの非常に複雑な機能は必要ありません)。カスタム承認属性はデータ層に依存しているため、プロパティ インジェクションとして挿入しようとしています。ただし、プロパティは常に Null です。コードは以下のとおりです。
AuthorizationHelper を挿入するコード:
属性はfilters.Add(new CustomAuthorizationFilterAttribute());としてFilterConfigに登録されます。
すべての接続は機能しますが、AuthorisationHelper は常に null です。
コメントをお待ちしております。
dependency-injection - 概念: Angular 1.* のセッター依存性注入
序文-これは「ハウツー」というよりも概念的な議論です。実装する簡単な方法がある場合は、その方法に関するヒントに感謝しますが、なぜこれが不可能なのか、なぜそうでないのか、または良いアイデアではないのかについての洞察を得たいと思っています。あらゆるコメント/建設的な批判を歓迎します。
プロパティ/セッターベースの依存性注入
新しい $injector API
簡単なコントローラーの例
アンギュラランドのどこか
なぜ?
JavaScript のシンプルさが気に入っています。それは非常に順応性があり、しかも強力な言語です。しかし、JavaScript に欠けている特定の機能を求めて別のプログラミング言語から来た開発者は私だけではないと思います。そのため、私は継承 (OMG を知っています!!!) を利用して、アプリケーション開発で多くの基本クラスを構築しています。具体的には、角度コントローラーはすべて、主要な基本クラス (baseViewController、basePopupController など) から継承します。
Angular のコンストラクター ベースのDI の強制により、基本コントローラー クラスを超えて拡張する予定がある場合、継承が多少面倒になります。コンストラクターの引数は、すべてのサブクラスに引き継がれる必要があります。さまざまな種類の依存性注入を許可する方法があればいいのにと思います。