Ninject Func澄清

Nil*_*Pun 0 c#

请有人帮我理解下面的陈述:

kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => ctx.Kernel)
Run Code Online (Sandbox Code Playgroud)
  1. 上面的代码做了什么?
  2. 什么是Func?
  3. 它试图绑定和接口IKernel ...?这部分真的让我困惑: <Func<IKernel>>().ToMethod(ctx => () => ctx.Kernel)

我知道kernel.bind用于将接口绑定到Concrete类型但不确定上面的内容,因为没有给出具体类型.

它如何适应现实世界的场景.基本上为什么以及何时使用此功能

谢谢

slo*_*oth 5

看起来像ninject.

基本上它告诉DIContainerninject返回一个函数Kernel,当某些东西要求DIContainera 时返回当前上下文Func<IKernel>.

看看这里.


那么,是什么Func

MSDN的文档:

封装一个没有参数的方法,并返回由TResult参数指定的类型的值.

你应该看一下泛型lambda表达式.