如何在编译时检查属性是否与特定的正则表达式匹配?

时间:2011-08-24 17:38:12

标签: c# attributes custom-attributes

我试图理解AssemblyVersionAttribute如何在编译时验证字符串格式。我想在我的应用程序中实现类似的东西(如果可能的话)。

例如,这很好:

    [assembly: AssemblyVersion("1.0.0.1")]

但是这个会导致编译错误(因为格式无效):

    [assembly: AssemblyVersion("1a.0.0.1")]

如何以相同的方式验证自定义属性?

2 个答案:

答案 0 :(得分:1)

IIRC这是内置此功能的编译器,并将AssemblyVersion属性视为特殊属性,因为它必须使用其值并将其烘焙到生成的程序集中。除非编写自己的编译器,否则我怀疑你是否可以使用自定义属性。 IIRC你可以做的最好的事情就是限制自定义属性目标:它是否仅适用于类,方法,属性.......

答案 1 :(得分:-1)

如果您决定按Regular Expression实施,请尝试使用此正则表达式:

\[assembly: AssemblyVersion\(\"([0-9]{1,}(\.){1}){3}([0-9]{1,}){1}\"\)\]