如何将成员变量或属性保留在nancy模块的一侧?

时间:2019-06-25 14:00:49

标签: c# nancy

我想知道是否可以将成员变量或公共属性保留在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发送GETNancyHost时,整个NancyModule都会被解析或重新调用...我认为我的列表每次都会重置为新的字符串列表。

我是nancy的新手,我肯定做错了什么。甚至可以在此模块中保留这样的变量吗?

1 个答案:

答案 0 :(得分:1)

您可以将MyList设为静态。

public static List<string> MyList { get; set; } = new List<string>();

在启动时创建每个NancyModule的实例,然后在HTTP请求进入时,应创建应处理该请求的NancyModule实例。因此,是的,每个请求都会创建一个模块的新实例。这意味着请求之间的共享状态必须通过其他方式完成,例如实例变量/属性-可以是数据库,可以是静态变量。