Как проверить, соответствует ли атрибут определенному регулярному выражению во время компиляции? - PullRequest
1 голос
/ 24 августа 2011

Я пытаюсь понять, как AssemblyVersionAttribute проверяет формат строки во время компиляции. Я хотел бы реализовать нечто подобное в моем приложении (если это возможно).

Например, это нормально:

    [assembly: AssemblyVersion("1.0.0.1")]

Но этот вызовет ошибку компилятора (поскольку формат неверен):

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

Как я могу проверить пользовательский атрибут таким же образом?

Ответы [ 2 ]

1 голос
/ 24 августа 2011

IIRC Это компилятор, который имеет эту встроенную функциональность и обрабатывает атрибут AssemblyVersion как особый, поскольку он должен использовать его значение и запекать его в результирующую сборку.Если вы не пишете свой собственный компилятор, я сомневаюсь, что вы могли бы сделать это с помощью пользовательских атрибутов.IIRC лучшее, что вы могли бы сделать, - это ограничить целевой объект настраиваемого атрибута: применяется ли он только к классам, методам, свойствам ...

0 голосов
/ 24 августа 2011

Если вы решили реализовать с помощью Regular Expression, попробуйте это регулярное выражение:

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