ServiceStack 将 base.Request.Querystring 作为参数传递给另一个 class

ServiceStack pass base.Request.Querystring as a parameter to another class

我已经实现了 ServiceStack 分页、部分响应、过滤等。我将所有可重用方法放入 RequestUtilities class.

而且我几乎所有的方法中都有这个 base.Request.Querystring。 (必须访问请求以检索属性、键、值等内容)。

现在我需要从 XServices.cs 中的 GET() 访问它。我假设我需要传递 base 作为方法的参数来实现这一点。但到目前为止,我找不到办法做到这一点。这个 base 是什么类型?我怎样才能将它作为参数传递?请指教。非常感谢。

来自RequestUtilities.cs,比如 string qValue = base.Request.QueryString["q"].ToString();

用于XServices.cs,如:

int count = base.Request.QueryString.Count;

PS:如何在 Stack Overflow 上用突出显示的 class 名称等装饰我的代码段。我使用了 Ctrl + k 但名称、方法等未突出显示。

base.Request 仅指继承自具有 IRequest 属性 的 class 的任何 class,即:

IRequest Request { get; }

主要是指您的 Service 基础 class,但其他内置 ServiceStack classes 像 Razor Views 以及基础 ASP.NET 页面或 ServiceStack控制器 classes 也提供对当前 IRequest 的访问。

IRequest 就像任何其他实例变量一样,您需要将它传递给您的实用程序方法和助手 classes(即来自您的服务),以便它们可以访问它。如果它们只是静态辅助方法,那么使用扩展方法会更好,因此您可以通过以下方式从您的服务中调用它们:

var result = base.Request.MyCustomHelper(arg1);

有关 IRequest 扩展方法的示例,请参阅 HttpRequestExtensions.cs

如果您在 ASP.NET 主机上,您也可以通过单例访问它:

HostContext.GetCurrentRequest();

但不推荐这样做,因为它取决于主机。