Проверка параметров настраиваемых атрибутов во время разработки / сборки

У меня есть атрибут CustomAuthorize , который проверяет, есть ли у пользователя доступ к функциям (пользователь или роль могут быть связаны с элементами из иерархического набора функций).

Для данного метода действия ...

[CustomAuthorize("Security.Admin.ManageWidgets.Update")]

Это работает, но я обеспокоен тем, что изменения в объекте безопасности могут вызвать проблемы, которые не будут обнаружены до выполнения. Я понимаю, что могу написать модульные тесты, чтобы уменьшить этот риск, но я хотел бы знать, можно ли проверить параметр атрибута во время компиляции. Мне также нравится, когда Intellisense помогает мне набирать это выражение.

В идеале я мог бы передать лямбда-выражение.

[CustomAuthorize(i => i.Admin.ManageWidgets.Update)]

К сожалению, это в настоящее время невозможно ( дополнительная информация от Microsoft ) .

Я также попытался инкапсулировать выражение, надеясь, что оно будет вычислено и затем передано в атрибут в виде строки, но это также не удалось скомпилировать с той же ошибкой ( Выражение не может содержать анонимные методы или лямбда-выражения ).

[CustomAuthorize(LambdaToString(i => i.Admin.ManageWidgets.Update))]

Как мне добавить поддержку времени разработки / сборки для моих параметров настраиваемых атрибутов?

5
задан Community 23 May 2017 в 11:47
поделиться