为什么需要这个 lambda:Function(x) x

Why would one need this lambda: Function(x) x

我在一个旧分支中找到了这一行,并且由于我非常尊重(无法访问的)作者,所以我试图弄清楚一个特定的行,更准确地说是末尾的 lambda:

container.Register(Of ServiceStack.Configuration.IResolver)(Function(x) x)

containerFunq.ContainerServiceStack。智能感知告诉我 lambda 正在填充 (factory As Func(Of Funq.Container, ServiceStack.Configuration.IResolver)).

关于作者,我可以假设两件事:他比我更擅长编码,而且他可能没有完成这篇文章。现在我猜这个 lambda 是故意的,而不是一些没有明确意图的未完成的行,但到目前为止没有人能帮助我理解为什么。

该容器是一个依赖注入容器。其他地方的代码将向容器询问接口实例。这里的代码是注册码,就是告诉容器如何提供一个IResolver。此外,它被设计为接受工厂功能;稍后的解析将调用该函数来生成请求的 IResolver.

在这种情况下,容器本身似乎实现了 IResolver。 lambda 是一个 returns 参数的函数,所以它很简单;它的参数是一个 Funq.Container 并且它 returns 是一个 ServiceStack.Configuration.IResolver,因此唯一可以编译的方法是容器实现该接口。

因此:容器实现了IResolver。该代码注册了一个工厂函数,该函数在调用时总是 returns 支持容器本身。

这样做似乎很奇怪。我完全不懂ServiceStack,所以我不确定为什么要这样做。