ASP.net c # глобально доступный объект - PullRequest
3 голосов
/ 10 января 2012

Как добавить объект Stack в мой global.asax, чтобы он был доступен всему приложению? На данный момент у меня есть:

void Application_Start(object sender, EventArgs e)
{
    // Global vars
    Application.Add("ArcadeTotalUniquePlayers", 0);
    Application.Add("ArcadeTotalPlays", 0);
    Stack<int> ArcadeLastPlayers = new Stack<int>(16);

Первые две переменные работают, но я не уверен, как сделать Stack глобально доступным.

Ответы [ 3 ]

4 голосов
/ 10 января 2012

Вы можете сделать:

Application.Add("ArcadeLastPlayers", new Stack<int>());

, а затем

((Stack<int>)Application["ArcadeLastPlayers"]).Pop();

Или вы можете сделать какую-то глобальную статическую, так что вам не придется разыгрывать ее каждый раз, когда вам нужно ее извлечь:

namespace GlobalUtils {
    public static class ArcadeData {
        public static Stack<int> ArcadeLastPlayers = new Stack<int>();
    }
}

, а затем

GlobalUtils.ArcadeData.ArcadeLastPlayers.Pop();
2 голосов
/ 10 января 2012

Если вы хотите использовать HttpApplcationState, вы можете просто сделать следующее:

Application.Add("ArcadeLastPlayers", new Stack<int>(16));

HttpApplicationState принимает строку для имени и объект в качестве связанного значения.Все, что вам нужно будет сделать, это привести его к стеку, когда вы получите значение "ArcadeLastPlayers".

1 голос
/ 10 января 2012

Используйте синглтон http://msdn.microsoft.com/en-us/library/ff650316.aspx - поместите файл .cs в app_code и отправьте свою тетю Бобу.

...