ASP.NET C#全局可用对象

问题描述 投票:4回答:3

如何将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全局访问。

c# asp.net stack global-asax
3个回答
5
投票

您可以做:

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
投票

如果要使用HttpApplcationState,则应该能够执行以下操作:

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

HttpApplicationState使用名称字符串和对象作为关联值。您需要做的就是在检索“ ArcadeLastPlayers”值时将其强制转换为堆栈。


1
投票

使用singleton-将.cs文件放置在app_code文件夹中,鲍勃是您的阿姨。

© www.soinside.com 2019 - 2024. All rights reserved.