0

誰かが私が以下の声明を理解するのを手伝ってくれませんか:

kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => ctx.Kernel)
  1. 上記のコードは何をしますか?
  2. ファンクとは?
  3. IKernel を何かにバインドしてインターフェースしようとしていますか? この部分は本当に私を混乱させます <Func<IKernel>>().ToMethod(ctx => () => ctx.Kernel:)

インターフェイスを具象型にバインドするためにkernel.bindが使用されていることは承知していますが、具象型が指定されていないため、上記についてはわかりません。

現実世界のシナリオにどのように適合しますか。基本的に、この関数を使用する理由とタイミング

ありがとう

4

1 に答える 1

5

ninjectのように見えます。

基本的に、何かがa を要求するたびに、現在のコンテキストのDIContainerを返す関数を返すように ninject に指示します。KernelDIContainerFunc<IKernel>

ここを見てください。


それで、何Funcですか?

MSDN のドキュメントから:

パラメーターを持たず、TResult パラメーターで指定された型の値を返すメソッドをカプセル化します。

ジェネリックラムダ式を調べる必要があります。

于 2012-06-14T11:40:15.890 に答える