2010-12-11 52 views
3

我有一个新的MVC 3项目,并在它我使用模型的注释,如:如何处理全球字符串常量ASP.NET MVC

[DisplayFormat(NullDisplayText = "[Not set]")] 

我宁愿避免字符串文字的重复使用是这样的:

[DisplayFormat(NullDisplayText = GlobalStrings.Nulls.DefaultNullText)] 

其中:

public struct GlobalStrings 
{ 
    public struct Nulls 
    { 
     public const string DefaultNullText = "[Not set]"; 
    } 
} 

但我不禁感到有这样做的更好的办法?

回答

6

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

如果这个地方的字符串真的是全局的(在整个程序中的许多地方使用),那么使用单个GlobalStrings结构也不是一个坏主意。尽管这通常不是这样(除了真正的全局文本,比如ApplicationName和Publisher)。

这些字符串通常可能用于应用程序的更本地化部分(例如子系统)。你可以考虑单独为那个子系统使用另一个模拟结构作为“全局变量”。如果只需要在一个类或层次结构中使用字符串,则可以考虑将它们放入基类中。如果将每个“全局”字符串放入与其最相关的类中,则有助于将常量分类并将其与适用的区域相关联。因此,如果“默认空文本”实际上只适用于通过DataAccess类和该类用户检索到的数据,则可以考虑将其添加为DataAccess类的公共常量/属性,以便该类的客户端可以访问作为DataAccess.DefaultNullString的“全局” - 这使得其他程序员更清楚该常量的用法。

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

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

+0

我喜欢你所说的将值分配给应用程序的各个方面。有时DataAccess可能需要一些简单的空值,比如空字符串(只是一个示例),其中UI组件更适合实际注入值'[Not set]'。 – ProfK 2010-12-12 15:32:23