我有一个新的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)
但我不禁觉得有更好的办法吗?
你所做的并不是一件非常糟糕的事情 - 你在一个容易改变的位置分享你的常数,这是一个非常好的主意.
如果这个地方的字符串是真正全局的(在整个程序中的许多位置使用),使用单个GlobalStrings结构也不是一个坏主意.但通常情况并非如此(除了真正的全局文本,如ApplicationName和Publisher).
字符串通常可能用于应用程序的更本地化部分(例如子系统).您可以考虑仅为该子系统使用另一个simlar结构作为"全局".如果仅在一个类或类的层次结构中需要字符串,则考虑将它们放在基类中.如果将每个"全局"字符串放入与其最相关的类中,则有助于将常量分类并将其与适用的区域相关联.因此,如果"默认空文本"实际上仅适用于通过"DataAccess"类和该类用户检索的数据,则考虑将其添加为DataAccess类的公共const/property,以便该类的客户端可以访问作为DataAccess的"全局".
通过在一个类中包含常量,它们在技术上仍然可以"全局"使用,但在邪恶意义上不是"全局的"("这里是一个常数,但我不知道它在程序中的适用位置")
您会发现,如果以这种方式将常量嵌入到不同的类/子系统中,则GlobalStrings结构将变得非常小甚至是空的.