如何在 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 - 可以是数据库,可以是静态变量。