在我的代码中,有几个字符串用作访问资源的键。这些键具有特定的格式,例如:
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
有没有办法实现这个?谢谢。