如何处理全局字符串常量ASP.NET MVC

Pro*_*ofK 3 .net architecture

我有一个新的MVC 3项目,在其中我使用模型注释,如:

[DisplayFormat(NullDisplayText = "[Not set]")]
Run Code Online (Sandbox Code Playgroud)

我更喜欢使用以下内容避免重复字符串文字:

[DisplayFormat(NullDisplayText =  GlobalStrings.Nulls.DefaultNullText)]
Run Code Online (Sandbox Code Playgroud)

哪里:

public struct GlobalStrings
{
    public struct Nulls
    {
        public const string DefaultNullText = "[Not set]";
    }
}
Run Code Online (Sandbox Code Playgroud)

但我不禁觉得有更好的办法吗?

Jas*_*ams 6

你所做的并不是一件非常糟糕的事情 - 你在一个容易改变的位置分享你的常数,这是一个非常好的主意.

如果这个地方的字符串是真正全局的(在整个程序中的许多位置使用),使用单个GlobalStrings结构也不是一个坏主意.但通常情况并非如此(除了真正的全局文本,如ApplicationName和Publisher).

字符串通常可能用于应用程序的更本地化部分(例如子系统).您可以考虑仅为该子系统使用另一个simlar结构作为"全局".如果仅在一个类或类的层次结构中需要字符串,则考虑将它们放在基类中.如果将每个"全局"字符串放入与其最相关的类中,则有助于将常量分类并将其与适用的区域相关联.因此,如果"默认空文本"实际上仅适用于通过"DataAccess"类和该类用户检索的数据,则考虑将其添加为DataAccess类的公共const/property,以便该类的客户端可以访问作为DataAccess的"全局".

通过在一个类中包含常量,它们在技术上仍然可以"全局"使用,但在邪恶意义上不是"全局的"("这里是一个常数,但我不知道它在程序中的适用位置")

您会发现,如果以这种方式将常量嵌入到不同的类/子系统中,则GlobalStrings结构将变得非常小甚至是空的.