全局常量在单独的文件中。这是个好主意吗?

时间:2010-12-13 20:14:40

标签: asp.net-mvc constants

我目前正在研究ASP.NET MVC应用程序。我打算创建一个静态类,我计划保存所有全局字符串常量,如会话名称。

我犹豫不决的原因是因为它有点嗅觉,但我不知道有更好的选择。

请告诉我如何定义全局常量。

4 个答案:

答案 0 :(得分:4)

瓦迪姆,

我完全按照您的建议行事,并为此目的使用静态类。然后,您可以获得强类型访问器的优势,并且可以根据需要添加覆盖(以方法的形式)。

这是一个片段:

public static class Config
{
    private const string NotSet = "**VALUE NOT SET**";
    private const int pageSize = 5;

    public static string CustomCache
    {
        get
        {
            return ConfigurationManager.AppSettings["CustomCache"] ?? NotSet;
        }
    }

    public static int PageSize
    {
        get
        {
            // simple default - no setter
            return pageSize; 
        }
    }
}

典型用法:

items = _repository.GetPaged(pageNumber, Config.PageSize)

在上面的类中,一些设置从web.config中的应用程序设置称为“第二代”,但在类中强类型以确保运行时错误检查等。其他设置是在类中定义的纯静态设置。

可以灵活地完成上述所有操作(在我看来),这种方法既具有吸引力,又具有真正的实力。

答案 1 :(得分:1)

另一种方法是创建资源(.resx)文件。或者,如果这些是可配置的值,则可以使用web.config或数据库配置表。

答案 2 :(得分:0)

您可以将global.asax文件用于此目的 - 我会为它们使用访问器,例如

private static int var ;

public static int VAR
{
   get { return var ; }
}

答案 3 :(得分:0)

无论是MVC还是Web表单,我都使用数据库条目(可用于仪表板修改的站点设置)和web.config appSettings(用于不经常更改或根本不更改的站点设置,即常量)的组合