問題タブ [ninject]
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# - Ninject 2 で LINQ to SQL DataContext にパラメーターなしのコンストラクターを使用するにはどうすればよいですか?
次のテクノロジに基づくプロジェクトで、Ninject 2 (昨日、MVC 拡張プロジェクトを含む Github からダウンロード) の使用を開始しました。
- .Net 3.5 SP1
- ASP.NET MVC 1.0
- LINQ to SQL
ここには魔法のようなものは何もありません - ランタイム コードで LINQ to SQL を使用して (および単体テスト コードでハッシュテーブルを使用して) 実装されたリポジトリ インターフェイス (IEntityRepository のような名前) がいくつかあります。これらの各リポジトリは、データベースと対話するために LINQ から SQL への DataContext のインスタンスを必要とするため、具体的なリポジトリ クラスのコンストラクター パラメーターになります。バインディングは次のように設定されます。
この理由は、エンティティがさらに必要になった場合に、異なるリポジトリ間でエンティティを共有できるようにしたいためです。 HttpRequest。
私は通常、MyDataContext にパラメーターなしのコンストラクターを使用します。これはテスト システムの内部プロジェクトに使用されるため、リスクとは見なされません。そのため、datacontext の "組み込み" 接続文字列は無害です。ただし、Ninject 2 は「貪欲」であり、MOST パラメーターを持つコンストラクターが必要であり、[Inject]
意味のある方法で生成されたコードにパラメーターを実際に貼り付けることはできないため、Ninject がコントローラーの 1 つを作成しようとするたびにエラーが発生します (これはデータコンテキストを必要とするリポジトリが必要です)。
コンストラクターを常に LEAST パラメーターで使用する「逆」のものを作成する機能についての言及と機能を見てきIConstructorScorer
ましたが、これにより、他のすべての注入のしくみが変わります-デフォルトの動作は、おそらくすべてに必要なものですしかし、データコンテキスト。
では、このバインディング (およびこのバインディングのみ) が特定のコンストラクターを使用する必要があることを指定する、すてきでクリーンな方法はありますか? Ninject 1 の場合と同じことをプロバイダーで行うことはできますか?おそらく独自の「ファクトリー」を提供できますか? それとも、あきらめて、意味のあるデータコンテキストにパラメーターをフィードしようとする必要がありますか?
.net - オブジェクトを WCF バリデータ クラスに挿入する方法
WCF サービスの依存性注入の使用をフォローアップするには、WCFバリデーターにDI を使用する方法があるので、これを行うことができます。
編集 - バリデーターが app.config で定義されているため、Dzmitry のアドバイスをカスタム動作拡張に適用しようとしました。悲しいことに、wcf はバリデーターにデフォルトのコンストラクターを持たせたいので、MethodMissingException が発生します。
System.MissingMethodException: No default constructor has been defined for this object.
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean
noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
これが私の行動クラスです:
dependency-injection - Ninject では、Bind<..>.ToSelf() でオブジェクトを作成した後、オブジェクトでカスタム コードを実行するにはどうすればよいですか?
Ninject の依存性注入では、次のようにクラスのバインディングをそれ自体に設定すると:
Ninject は、SomeClass が持つ依存関係を非常にうまく解決し、オブジェクトを返します。後処理イベントのように、新しいクラスを作成するたびに返される SomeClass に対して何かを実行できるようにしたいと考えています。.ToMethod (または ToFactoryMethod) バインディングを使用して明示的に新しいものにすることもできますが、事前に Ninject によってすべての依存関係を解決したいと考えています。
次のようなことをするといいでしょう:
Ninject 1.0/1.1 でこれを行う方法はありますか?
.net - 多くの「小さな」アセンブリの特定の欠点は?
現在大規模なモノリシック ライブラリに依存性注入を導入する作業を計画しています。これは、ライブラリの単体テストを容易にし、理解しやすくし、おまけとしてより柔軟にするためです。
私はNInjectを使用することに決めました。ネイトのモットーである「1 つのことをうまく行う」(言い換え) が本当に好きで、DI のコンテキスト内で特にうまくいくようです。
私が今疑問に思っているのは、現在単一の大きなアセンブリであるものを、ばらばらな機能セットを持つ複数の小さなアセンブリに分割する必要があるかどうかということです。これらの小さなアセンブリの一部には相互依存関係がありますが、コードのアーキテクチャはすでにかなり疎結合されているため、すべてではありません。
これらの機能セットは、それ自体が些細で小さいものではないことに注意してください...クライアント/サーバー通信、シリアル化、カスタム コレクション タイプ、ファイル IO 抽象化、共通ルーチン ライブラリ、スレッド ライブラリ、標準ロギングなどを含みます。
前の質問がわかりました:多くの小さなアセンブリと 1 つの大きなアセンブリのどちらが優れていますか? 種類はこの問題に対処しますが、これよりもさらに細かい粒度であると思われるため、この場合でもそこにある答えが適用されるかどうか疑問に思いますか?
また、このトピックの近くにあるさまざまな質問の中で、「多すぎる」アセンブリが不特定の「痛み」と「問題」を引き起こしているというのが一般的な答えです。このアプローチの潜在的なマイナス面を具体的に知りたいです。
以前は 1 つしか必要なかったのに 8 つのアセンブリを追加するのは「少し面倒」であることに同意しますが、すべてのアプリケーションに大きなモノリシック ライブラリを含めなければならないことも理想的ではありません...さらに、8 つのアセンブリを追加することは、あなただけが行うことです。ですから、私はその議論にほとんど同情しません (たとえ最初は他のみんなと一緒に文句を言うかもしれませんが)。
補遺:
これまでのところ、小規模なアセンブリに反対する説得力のある理由は見られませんでした。そのため、これが問題ではないかのように、今のところ続行すると思います。検証可能な事実を裏付ける確かな理由を誰かが思いつくことができれば、私はまだそれらについて聞くことに非常に興味があります. (可視性を高めるために、できるだけ早く報奨金を追加します)
編集:パフォーマンス分析と結果を別の回答に移動しました(以下を参照)。
silverlight - Silverlight で Prism イベントの集計に Ninject を使用できますか?
Prismを使用してSilverlight 3でプロジェクトを行うことを検討しています。ここに示すように、イベント集約が本当に好きですhttp://development-guides.silverbaylabs.org/Video/Prism-Eventing
すべてのリソースは、Ninject ではなく、Prism で Unity を使用することを示しているようです。Ninject では、イベントを集約する同様の方法はありますか? または、Prism を使用したい場合、Unity に限定されますか?
asp.net-mvc - Ninject not firing?
I'm trying to set up Ninject for the first time. I've got an IRepository interface, and a Repository implementation. I'm using ASP.NET MVC, and I'm trying to inject the implementation like so:
And here's Global.asax:
And here's the BaseModule class:
When I browse to the Index() action, though, I get "Object reference not set to an instance of an object" when trying to use _repo.Insert(b). What am I leaving out?
c# - バインディングを注入する
インターフェイスを別のアセンブリの具象クラスにバインドするにはどうすればよいですか?
私のソリューションには次のプロジェクトがあります。
Foo.Data
Foo.Domain
構造マップで、2つのアセンブリ名をStructureMap.configファイルに追加してから、PluginFamily属性とPluggable属性を使用して、インターフェイスを具象クラスにマップします。
Ninjectで同じことをどのように達成できますか?
unit-testing - Unity RegisterInstance メソッドに相当する Ninject
Ninject には、unity の registerinstance と同等のメソッドがありますか。
モックオブジェクトを作成して登録したい。
ありがとう
asp.net - Ninject、ASP.NET、およびカスタム コントロール
現在、ASP.NET (MVC ではなく標準) を使用しており、IOC コンテナーとして Ninject を使用しています。
ページに依存関係を挿入するために既に使用していますが、カスタム コントロールに依存関係を挿入する方法があるかどうか疑問に思っていました。
そうでない場合は、Ninject の拡張を開始します :)