【发布时间】:2009-02-03 12:27:30
【问题描述】:
在我的代码中,有几个字符串用作访问资源的键。这些键具有特定的格式,例如
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
有什么办法可以做到吗?
谢谢
【问题讨论】:
标签: c# .net string compiler-construction