タグ付けされた質問 「ioc-container」

30
単純なDIコードではなくIoCコンテナーが必要なのはなぜですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 6年前休業。 ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 私はしばらくの間、依存性注入(DI)を使用しており、コンストラクター、プロパティ、またはメソッドのいずれかに注入しています。制御の反転(IoC)コンテナーを使用する必要性を感じたことはありません。ただし、読むほど、コミュニティからIoCコンテナを使用するようにというプレッシャーが強くなります。 StructureMap、NInject、Unity、Funqなどの.NETコンテナで遊んだ。IoCコンテナーがコードにどのように利益をもたらすか、または改善するかはまだわかりません。 また、同僚の多くが理解できないコードを目にするため、職場でコンテナを使い始めるのも怖いです。彼らの多くは新しい技術を学ぶことに消極的かもしれません。 IoCコンテナを使用する必要があることを納得してください。職場で他の開発者と話すとき、これらの引数を使用します。

11
Springでは自動配線はどのように機能しますか?
コントロール(IoC)の反転がでどのように機能するかについて、少し混乱していますSpring。 インターフェースUserServiceImplを実装するサービスクラスが呼び出されたとしUserServiceます。 これはどうでしょう@Autowired? そして、私の中にControllers、どのようになり、私はこのサービスの?instantiateinstance 次のようにすればよいですか? UserService userService = new UserServiceImpl();

7
主要なC#DI / IoCフレームワークはどのように比較されますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 3年前休業。 この質問を改善する 聖戦領域に足を踏み入れるリスクがある場合、これらの一般的なDI / IoCフレームワークの長所と短所は何ですか?..: Ninject ユニティ Castle.Windsor Autofac StructureMap ここに記載していない他のC#のDI / IoCフレームワークはありますか? 私のユースケースのコンテキストでは、クライアントWPFアプリとWCF / SQLサービスインフラストラクチャを構築しています。使いやすさ(特に明確で簡潔な構文に関して)、一貫したドキュメント、優れたコミュニティサポートとパフォーマンスはすべて重要な要素です私の選択で。 更新: 引用されているリソースと重複する質問は古くなっているようですが、これらすべてのフレームワークについての知識を持つ誰かが前に出て、実際の洞察を提供できますか? 私はこのテーマに関するほとんどの意見が偏っている可能性があることを理解していますが、誰かがすべてのこれらのフレームワークを研究するために時間をかけ、少なくとも一般的に客観的な比較を持つことを望んでいます。 これまでに行われていない場合は、自分で調査することをいといませんが、これは少なくとも数人がすでに行っていることだと思いました。 2回目の更新: 複数のDI / IoCコンテナの経験がある場合は、それらの長所と短所をランク付けして要約してください。ありがとうございます。これは、人々が作成したあいまいな小さなコンテナーをすべて発見するための演習ではありません。人気のある(そしてアクティブな)フレームワークの比較を探しています。

9
Dependency Injectionコンストラクターの狂気を避ける方法は?
私のコンストラクターは次のようになり始めています: public MyClass(Container con, SomeClass1 obj1, SomeClass2, obj2.... ) パラメータリストは増え続けています。「コンテナ」は依存関係注入コンテナなので、なぜこれを実行できないのですか。 public MyClass(Container con) すべてのクラスで?欠点は何ですか?これを行うと、私は栄光のスタティックを使用しているように感じます。IoCと依存性注入の狂気についてのあなたの考えを共有してください。

5
DIコンテナーを介して作成されたオブジェクトを初期化するためのパターンはありますか
Unityにオブジェクトの作成を管理させようとしているのですが、実行時までわからないいくつかの初期化パラメーターが必要です。 現時点で私がそれを行う方法を考えることができる唯一の方法は、インターフェイスにInitメソッドを持つことです。 interface IMyIntf { void Initialize(string runTimeParam); string RunTimeParam { get; } } 次に、それを(Unityで)使用するには、次のようにします。 var IMyIntf = unityContainer.Resolve<IMyIntf>(); IMyIntf.Initialize("somevalue"); このシナリオでは、runTimeParamparamはユーザー入力に基づいて実行時に決定されます。ここでの些細なケースは単にの値を返しますrunTimeParamが、実際にはパラメーターはファイル名のようなものであり、initializeメソッドはファイルに対して何かを行います。 これにより、多くの問題が発生します。つまり、このInitializeメソッドはインターフェースで使用でき、複数回呼び出すことができます。実装にフラグを設定し、を繰り返し呼び出したときに例外をスローするのInitializeは、かなり不格好です。 インターフェイスを解決する時点では、の実装について何も知りたくありませんIMyIntf。しかし、私が欲しいのは、このインターフェースが特定の1回の初期化パラメーターを必要とするという知識です。オブジェクトを作成するときに、何らかの方法でこの情報を使用してインターフェイスに注釈(属性)を付け、それらをフレームワークに渡す方法はありますか? 編集:インターフェースについてもう少し説明しました。

4
.NET Core DI、コンストラクターにパラメーターを渡す方法
次のサービスコンストラクターを持つ public class Service : IService { public Service(IOtherService service1, IAnotherOne service2, string arg) { } } .NET CoreIOCメカニズムを使用してパラメーターを渡すための選択肢は何ですか _serviceCollection.AddSingleton<IOtherService , OtherService>(); _serviceCollection.AddSingleton<IAnotherOne , AnotherOne>(); _serviceCollection.AddSingleton<IService>(x=>new Service( _serviceCollection.BuildServiceProvider().GetService<IOtherService>(), _serviceCollection.BuildServiceProvider().GetService<IAnotherOne >(), "" )); 他に方法はありますか?


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.