問題タブ [structuremap]
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.
inversion-of-control - 通常、StructureMap Registry クラスをソリューションのどこに配置しますか?
現在のレイアウトは次のとおりです。
解決:
芯
- ドメイン
- インターフェース
データアクセス
- プロバイダ
- セッション
サービス
UI
単体テスト
統合テスト
私は通常、コア ドメイン エンティティ/POCO を外部依存関係をあまり多くせずに、できるだけ軽量に保つようにしています。そのため、サービス レイヤーには通常、すべてのレイヤーへのプロジェクト参照があるため、それをサービス レイヤーに配置するのが理にかなっているかもしれないと考えていました。
CodeCampServer では、IoC 構成用に DependencyResolution という別のプロジェクトを実際に作成していることに気付きました。
http://code.google.com/p/codecampserver/source/browse/trunk#trunk/src/DependencyResolution
考え?
structuremap - Structuremap を使用する本当のオープン ソース プロジェクト?
structuremap と DI コードの配置/構造化の方法を学びたいのですが、ガイダンスとして参照できる StructureMap を使用するオープン ソース プロジェクトはありますか?
webforms - WebフォームとDIオブジェクトのインスタンス化を使用したMVPパターン
データを永続化するために汎用リポジトリパターンを使用しています。PageLoadで、(IRepositoryから)新しいリポジトリを作成し、PageUnloadで、それを破棄します。
MasterPage / Pageは、プレゼンターに渡すオブジェクトのインスタンス化を担当する必要がありますか、それともプレゼンターがこれを担当する必要がありますか?プレゼンターに渡されるインターフェイスをモックする方が簡単なので、ページ(表示)よりもプレゼンターのテストに関心があります。
サンプルページ
この場合、StructureMapやNinjectなどのDIフレームワークは役に立ちますか?このような物の処分を担当するのでしょうか?
asp.net-mvc - ASP.NET MVC: HTTPContext と依存関係の挿入
現在、HttpContext から現在のユーザー名を取得し、それをサービス メソッドで使用するアクションに渡す ActionFilter があります。例えば:
アクション レベルではなく、コントローラー コンストラクター レベルでこれを行う理由ができました。現在、構造マップを使用してコントローラーを作成し、サービスを注入しています。私は次のようなものを見ています:
とはいえ、これは私が使用した最初のプロジェクトであるため、私の IoC foo は非常に弱いです。
だから私の質問は...構造マップにHttpContextUserProviderのコンストラクターでHttpContextを渡すように指示するにはどうすればよいですか? これは奇妙に思えます... HttpContextの考え方がわかりません。
structuremap - StructureMap: 非静的コンテナーを取得する方法はありますか?
私が見たすべての StructureMap の例では、静的な ObjectFactory クラスを使用してオブジェクトを初期化および解決しています。ただし、コンテナへの参照を渡したいと思います。ObjectFactory は、非静的オブジェクトの単なるシングルトン ラッパーであると想定しています。しかし、それはどこですか?
dependency-injection - StructureMapインターセプター
さまざまなインターフェースを実装するサービスがたくさんあります。例、IAlbumService
などIMediaService
。
これらのインターフェイスの各メソッドへの呼び出しをログに記録したいと思います。StructureMapを使用してこれを行うにはどうすればよいですか?
私はこれがこの質問とほとんど同じであることに気づきました。それは私がウィンザーを使用していないということだけです。
c# - StructureMap で、実行時に InstanceScope を変更するにはどうすればよいですか?
私の DefaultRegistry には、次の構成があります。
Web アプリケーション フローのある時点で、長い会話を取得するために InstanceScope を HttpSession に変更したいので、次のようにします。
これは初期の InstanceScope を置き換えるようですが、残念ながら現在のリクエストに対してのみ持続します。次の要求が到着すると、初期構成が再びアクティブになり、セッション情報が失われます。
後で、次のような方法で変更を元に戻したいとも考えています。
しかし、一方向に機能させると、おそらく両方で機能します。
実行時に初期 InstanceScope を永久に置き換えることは可能ですか? これはどのように実装する必要がありますか?また、これは長い会話を得る良い方法だと思いますか、それとも StructureMap と NHibernate を使ってそれを行うためのより良い/より簡単な方法はありますか?
model-view-controller - MVC リポジトリ パターンと StructureMap に関する問題
ado.net エンティティ フレームワークの上に作成したリポジトリ パターンがあります。オブジェクトを切り離すために StructureMap を実装しようとすると、StackOverflowException (無限ループ?) が発生し続けました。パターンは次のようになります。
IEntityRepository where TEntity : class 基本的な CRUD メンバーを定義します
MyEntityRepository : IEntityRepository CRUD メンバーを実装します
IEntityService TEntity : class 各メンバーに共通の型を返す CRUD メンバーを定義します。
MyEntityService : IEntityService リポジトリを使用してデータを取得し、結果として一般的な型 (IList、bool など) を返します。
問題は私のサービス層にあるようです。より具体的には、コンストラクターを使用します。
コントローラーから、IValidationDictionary を実装するオブジェクトを渡します。そして、リポジトリを初期化するために 2 番目のコンストラクターを明示的に呼び出しています。
コントローラーのコンストラクターは次のようになります (最初のコンストラクターは、検証オブジェクトのインスタンスを作成します)。
IValidationDictionary オブジェクト参照を渡さない場合、すべてが機能します。この場合、最初のコントローラー コンストラクターが削除され、サービス オブジェクトには、パラメーターとしてリポジトリ インターフェイスを受け入れるコンストラクターが 1 つだけ含まれます。
これについての助けに感謝します:)ありがとう。
silverlight - Silverlightの依存性注入?
私は通常、.NETでの依存性注入にStructureMap.dll(MvcContribから)を使用します。
Silverlightに相当するもの、または誰かが使用するツールはありますか?当然、手作業で行うことができますが、難しくはありません。しかし、StructureMapのようにSilverlight用に形式化されたものがあるのではないかと思いました。
model-view-controller - MVC の StructureMap コントローラー ファクトリと null コントローラー インスタンス
私はまだ StructureMap で物事を理解しようとしています。私が遭遇している問題の 1 つは、null コントローラー タイプが渡されたときに Controller Factory クラスが爆発することです。これは、アプリケーションが初めてビルドされたときにのみ発生し、その後のすべてのビルドは正常に機能します。Visual Studioをシャットダウンしてプロジェクトを再度開いた場合でも(IISでこれを実行していません)。ある種のキャッシングが行われているようです。コントローラ クラスは次のようになります。
何が間違っている可能性がありますか?すべてのコントローラーを登録する必要がありますか? ありがとうございました。