Ninject

登録していないコンポーネントが自動でインスタンス化されるのを防ぐには

上で示した挙動がいやな場合もあるかもしれません。 そのときは、IKernelの実装クラスを作成してそれを使います。具体的にはIKernelのHandleMissingBindingメソッドをオーバーライドしてfalseを返します。 public class MissingBindingDisabledKernel : Stan…

コンポーネント登録をせずにDIしてインターセプタを適用

自動登録という機能があるわけではなく、Kernel(コンテナ)に問い合わせて存在しなかったらインスタンス化したりDIしてくれるようです。これは便利。 それと、IKernelのIntercept拡張メソッドを使うと条件に引っかかるメソッドにインターセプタが適用できま…

属性でインターセプトの対象を示す

usingしておきます。 using Ninject; using Ninject.Extensions.Interception; using Ninject.Extensions.Interception.Attributes; using Ninject.Extensions.Interception.Infrastructure.Language; using Ninject.Extensions.Interception.Request; イン…

NinjectでInterceptorをつかう

Inteceptorの機能はExtensionとして提供されています。ダウンロードはここからできます。 http://github.com/idavis/ninject.extensions.interception/downloads インターセプタの実装が2つ(Castle DynamicProxyとLinFu)あるのでどちらか版を選ぶといいと…

IntelliSenseに表示させないことで流れるインタフェースをより滑らかに

Ninjectのコードを読んでいて知りました。そういうことができるんですね。 /// <summary> /// A hack to hide methods defined on <see cref="System.Object"/> for IntelliSense /// on fluent interfaces. Credit to Daniel Cazzulino. /// </summary> [EditorBrowsable(EditorBrowsableState.Never)] pub…

Ninjectを使ってみた その3

インジェクションのタイプは、3つだそうです。 コンストラクタインジェクション プロパティインジェクション メソッドインジェクション バージョン1のころはフィールドインジェクションがあったようですが、バージョン2で廃止したそうです。C#やVB.NETの場合…

Ninjectを使ってみた その2

モジュールを動的に読み込めます。まず、Assemblyから。 [global::Microsoft.VisualStudio.TestTools.UnitTesting.TestMethod] public void Dynamic_module_loading_by_Assembly() { var kernel = new StandardKernel(); kernel.Load(AppDomain.CurrentDomai…

Ninjectを使ってみた

C#で書かれた軽量なDIコンテナNinjectをちょっとだけ使ってみました。GuiceのC#版のようです。最近バージョン2がリリースされたみたいですね。 サイト http://ninject.org/ 作者のブログ http://kohari.org/ あんまりドキュメントがないのが残念ですが、コー…