gpt4 book ai didi

c# - 在 Nancy Lambda Capture 中捕获 'this'

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:00 24 4
gpt4 key购买 nike

我有一个看起来像这样的 Nancy 模块

public class Configurer : NancyModule
{
private Settings mSettings;

public Configurer()
{
mSettings = new Settings();

Get["/"] = parameters =>
{
// Do something with mSettings here
mSettings.Name = new string("blah");
// and then return a response
return Response.AsJson<Settings>(mSettings);.
};
}
}

我遇到的问题是 mSettings 始终是 null(我假设是因为我没有在 lamdba 闭包中捕获 this。我试过在闭包中传递它,但它不起作用)。我也尝试过使用参数动态字典,但也失败了。是否可以在 nancy 模块中使用成员变量,如果可以,该怎么做?我可能遗漏了一些明显的东西!

关于设置等的创建没有抛出异常,我可以在类里面的其他地方使用它,只是不在 Lambda 中。该类也是线程安全的,我只是没有将它添加到上面的示例中。

最佳答案

事实证明,在每次调用 Nancy 路由(GET 等)时,都会构建一个新版本的 Nancy 模块。因此,生命周期仅与单次调用一样长。这意味着在定义 Nancy 路由之前,必须在构造函数中构造任何成员变量。

这样做的缺点是您不能在类的其他地方修改或保留状态。因此,有必要将状态信息保存在别处,并提供一个接口(interface)以从 Nancy 模块中检索它。

上面的例子会按预期工作(因此不是最好的例子)但是在我的实际用例中 mSettings 是在类的其他地方用另一种方法填充的,并且只在 Nancy 路由中读取状态无效的时间。

关于c# - 在 Nancy Lambda Capture 中捕获 'this',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24610804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com