2010-12-11 22 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