我有一个看起来像这样的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
。我已尝试在闭包中传递此内容但是这是行不通的)。我也试过使用参数动态字典,但也失败了。是否可以在南希模块中使用成员变量,如果可以,如何才能完成?我可能错过了一些明显的东西!
没有关于创建设置等的异常,我可以在课堂的其他地方使用它,而不是在Lambdas中。该类也是线程安全的,我只是没有将它添加到上面的例子中。
答案 0 :(得分:2)
事实证明,在每次呼叫南希路线(GET等)时,都会构建一个新版本的南希模块。因此,寿命仅与该单个呼叫一样长。这意味着在定义Nancy路由之前,必须在构造函数中构造任何成员变量。
这样做的缺点是你不能在课堂的其他地方修改或保持状态。因此,有必要将状态信息保存在其他位置,并提供从Nancy模块检索它的接口。
上面的示例将按预期工作(因此不是最好的示例)但是在我的实际用例中mSettings
在另一个方法中填充在类的其他地方,并且只在Nancy路由中读取,到时为止状态无效。