我想知道是否可以将成员变量或公共属性保留在NancyModule
下。
这是我认为应该起作用但不起作用的简单示例。
public class MyModule : NancyModule
{
public List<string> MyList { get; set; } = new List<string>();//Problem
public MyModule()
{
#region Get
Get("/index", args => GetIndex("user"));
#endregion
#region Post
Post("/postUser", args => PostUser("user"));
#endregion
}
private int GetIndex(string user)
{
return MyList.IndexOf(user);//Problem
}
private int PostUser(string user)
{
MyList.Add(user);//Problem
return MyList.IndexOf(user);//Problem
}
}
通过调试,我发现每次向运行中的POST
发送GET
或NancyHost
时,整个NancyModule
都会被解析或重新调用...我认为我的列表每次都会重置为新的字符串列表。
我是nancy的新手,我肯定做错了什么。甚至可以在此模块中保留这样的变量吗?
答案 0 :(得分:1)
您可以将MyList
设为静态。
public static List<string> MyList { get; set; } = new List<string>();
在启动时创建每个NancyModule的实例,然后在HTTP请求进入时,应创建应处理该请求的NancyModule实例。因此,是的,每个请求都会创建一个模块的新实例。这意味着请求之间的共享状态必须通过其他方式完成,例如实例变量/属性-可以是数据库,可以是静态变量。