Как сохранить переменные или свойства членов на стороне модуля nancy? - PullRequest
2 голосов
/ 25 июня 2019

Я хотел бы знать, возможно ли сохранить переменные-члены или общедоступные свойства в 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 анализируется или вызывается ... Поэтому я думаю, что мой список сбрасывается накаждый раз новый список строк.

Я новичок в Нэнси и определенно что-то делаю не так.Можно ли вообще хранить такую ​​переменную в этом модуле?

1 Ответ

1 голос
/ 25 июня 2019

Вы можете сделать MyList статичным.

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

Экземпляр каждого модуля NancyModule создается при запуске, а затем по мере поступления HTTP-запросов в экземпляр модуля NancyModule, который должен обрабатывать запрос. Так что да, новый экземпляр вашего модуля создается по запросу. Это означает, что разделение состояния между запросами должно выполняться другими средствами, чтобы переменная / свойства экземпляра - могла быть базой данных, могла быть статической переменной.

...