1

我在一个旧分支中找到了这一行,并且由于我非常尊重(无法访问的)作者,我试图理解一个特定的行,更准确地说是最后的 lambda:

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

container是一个Funq.Container通过ServiceStack。智能感知告诉我 lambda 正在填充(factory As Func(Of Funq.Container, ServiceStack.Configuration.IResolver)).

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

4

1 回答 1

2

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

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

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

这样做似乎很奇怪。我根本不知道 ServiceStack,所以我不确定为什么要这样做。

于 2020-10-07T22:26:00.660 回答