如何在 nancy 模块端保留成员变量或属性?
How to keep member variables or properties on nancy module's side?
我想知道是否可以在 NancyModule
.
下保留成员变量或 public 属性
这是一个简单的例子,说明我认为应该起作用但不起作用的方法。
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 有点陌生,我肯定做错了什么。甚至可以在这个模块中保留这样的变量吗?
您可以使 MyList
静态化。
public static List<string> MyList { get; set; } = new List<string>();
在启动时创建每个 NancyModule 的实例,然后当 HTTP 请求进入时,创建应处理请求的 NancyModule 实例。所以是的,每个请求都会创建一个新的模块实例。这意味着请求之间的共享状态必须通过其他方式完成,实例 variable/properties - 可以是数据库,可以是静态变量。
我想知道是否可以在 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 有点陌生,我肯定做错了什么。甚至可以在这个模块中保留这样的变量吗?
您可以使 MyList
静态化。
public static List<string> MyList { get; set; } = new List<string>();
在启动时创建每个 NancyModule 的实例,然后当 HTTP 请求进入时,创建应处理请求的 NancyModule 实例。所以是的,每个请求都会创建一个新的模块实例。这意味着请求之间的共享状态必须通过其他方式完成,实例 variable/properties - 可以是数据库,可以是静态变量。