我有一个看起来像这样的南希模块
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
(我想是因为我没有捕获this
到lamdba闭包中。我试图在闭包中传递此函数,但它不起作用)。我也尝试过使用paramaters动态字典,但是也失败了。是否可以在nancy模块中使用成员变量,如果可以,该怎么做?我可能缺少明显的东西!
关于设置等的创建没有任何异常,我可以在类的其他地方使用它,而不能在Lambda中使用。该类也是线程安全的,我只是没有将其添加到上面的示例中。
事实证明,每次调用Nancy路由(GET等)时,都会构建新版本的Nancy模块。因此,生存期仅与该单个调用一样长。这意味着在定义Nancy路由之前,必须在构造函数中构造任何成员变量。
这样做的缺点是您不能在类中的其他地方修改或保留状态。因此,有必要将状态信息保留在其他位置,并提供一个接口以从Nancy模块中检索它。
上面的示例将按预期工作(因此不是最佳示例),但是在我的实际用例mSettings
中,该类已使用另一种方法填充了该类的其他位置,并且仅在Nancy路由中被读取,此时状态无效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句