在我的代碼中有幾個字符串被用作訪問資源的關鍵字。這些鍵具有特定的格式,例如在C編譯時檢查字符串格式#
string key = "ABC123";
目前,所有這些鍵都存儲爲字符串,但我想使事情更健壯和類型安全。理想情況下,我想在編譯時檢查字符串格式是否正確。
下一階段是創建一個從字符串初始化的ResourceKey類。然後,我可以在運行時檢查字符串的格式,例如
ResourceKey key = "ABC123";
那裏獲取ResourceKey被定義爲:
using System.Diagnostics;
using System.Text.RegularExpressions;
class ResourceKey
{
public string Key { get; set; }
public static implicit operator ResourceKey (string s)
{
Debug.Assert(Regex.IsMatch(s, @"^[A-Z]{3}[0-9]{3}$"));
return new ResourceKey() { Key = s };
}
}
我真正想要做的是使程序無法構建,如果有人試圖使用有一種編譯時斷言的一個無效的密鑰。例如
ResourceKey k1 = "ABC123"; // compiles
ResourceKey k2 = "DEF456"; // compiles
ResourceKey k3 = "hello world"; // error at compile time
有什麼辦法可以達到這個目的嗎?
謝謝
我同意這一點,我建議還請檢查http://www.postsharp.org/ 確保/在邏輯之後 – kentaromiura 2009-02-03 12:38:11
好主意 - 但不幸的是這些密鑰分散在數以萬計的遺留代碼行中 - 絕大多數不在單元測試中。儘管我們到了! – roomaroo 2009-02-04 09:42:01
對不起,聽說! – 2009-02-04 11:21:16