У меня есть атрибут CustomAuthorize
, который проверяет, есть ли у пользователя доступ к функциям (пользователь или роль могут быть связаны с элементами из иерархического набора функций).
Для данного метода действия ...
[CustomAuthorize("Security.Admin.ManageWidgets.Update")]
Это работает, но я обеспокоен тем, что изменения в объекте безопасности могут вызвать проблемы, которые не будут обнаружены до выполнения. Я понимаю, что могу написать модульные тесты, чтобы уменьшить этот риск, но я хотел бы знать, можно ли проверить параметр атрибута во время компиляции. Мне также нравится, когда Intellisense помогает мне набирать это выражение.
В идеале я мог бы передать лямбда-выражение.
[CustomAuthorize(i => i.Admin.ManageWidgets.Update)]
К сожалению, это в настоящее время невозможно ( дополнительная информация от Microsoft ) .
Я также попытался инкапсулировать выражение, надеясь, что оно будет вычислено и затем передано в атрибут в виде строки, но это также не удалось скомпилировать с той же ошибкой ( Выражение не может содержать анонимные методы или лямбда-выражения ).
[CustomAuthorize(LambdaToString(i => i.Admin.ManageWidgets.Update))]
Как мне добавить поддержку времени разработки / сборки для моих параметров настраиваемых атрибутов?