タグ付けされた質問 「inversion-of-control」

制御の反転(IoC)は、システムの制御のフローが手続き型プログラミングと比較して反転している一部のソフトウェアアーキテクチャ設計の側面を説明する抽象的な原理です。

21
依存性注入はカプセル化を犠牲にする必要がありますか?
私が正しく理解している場合、依存性注入の一般的なメカニズムは、クラスのコンストラクターまたはクラスのパブリックプロパティ(メンバー)を介して注入することです。 これにより、注入される依存関係が明らかになり、カプセル化のOOP原則に違反します。 このトレードオフを特定することは正しいですか?この問題にどのように対処しますか? 以下の自分の質問に対する私の回答も参照してください。

4
Ioc / DI-アプリケーションのエントリポイントですべてのレイヤー/アセンブリを参照する必要があるのはなぜですか?
(この質問に関連して、EF4:遅延読み込みが有効になっているときにプロキシの作成を有効にする必要があるのはなぜですか?) 私はDIが初めてなので、我慢してください。コンテナーがすべての登録済みタイプのインスタンス化を担当していることを理解していますが、そのためには、ソリューション内のすべてのDLLへの参照とその参照が必要です。 DIコンテナーを使用していない場合は、MVC3アプリでEntityFrameworkライブラリを参照する必要はなく、DAL / Repoレイヤーを参照するビジネスレイヤーのみを参照します。 結局のところ、すべてのDLLがbinフォルダーに含まれていることを知っていますが、私の問題は、必要なすべてのファイルを含むWAPを公開できるように、VSの「参照の追加」を介して明示的に参照する必要があることです。

5
ASP.NET CoreのConfigureServices内のインスタンスを解決する方法
スタートアップIOptions<AppSettings>のConfigureServicesメソッドからのインスタンスを解決することは可能ですか?通常はを使用IServiceProviderしてインスタンスを初期化できますが、サービスを登録するときのこの段階ではインスタンスはありません。 public void ConfigureServices(IServiceCollection services) { services.Configure<AppSettings>( configuration.GetConfigurationSection(nameof(AppSettings))); // How can I resolve IOptions<AppSettings> here? }

4
ユニットテストでのIoCの使用
IoCコンテナを単体テストに使用するにはどうすればよいですか?IoCを使用して巨大なソリューション(50以上のプロジェクト)でモックを管理することは役に立ちますか?何か経験はありますか?単体テストで使用するためにうまく機能するC#ライブラリはありますか?

2
IoCコンテナを使用してエンティティ/ビジネスオブジェクトの依存関係を解決してみませんか?
DIの背後にある概念は理解していますが、さまざまなIoCコンテナーで何ができるかを学んでいます。ほとんどの人がステートレスサービスを接続するためにIoCコンテナーを使用することを提唱しているようですが、エンティティなどのステートフルオブジェクトにそれらを使用するのはどうでしょうか。 それが正しいか間違っているかにかかわらず、私は通常、その動作に外部クラスが必要な場合でも、エンティティに動作を詰め込みます。例: public class Order : IOrder { private string _ShipAddress; private IShipQuoter _ShipQuoter; public Order(IOrderData OrderData, IShipQuoter ShipQuoter) { // OrderData comes from a repository and has the data needed // to construct order _ShipAddress = OrderData.ShipAddress; // etc. _ShipQuoter = ShipQuoter; } private decimal GetShippingRate() { return _ShipQuoter.GetRate(this); …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.