Да, вы определенно можете вернуть атрибуты метода и что-то с ними делать.
Например (извините в C #):
return _Order.GetType()
.GetMethod("ChangeBillingAddress")
.GetCustomAttributes(typeof(PrincipalPermissionAttribute), true)
.Cast<PrincipalPermissionAttribute>()
.All(r => IsPermittedAccess(r, Thread.CurrentPrincipal));
Где можно узнать, что делать с атрибутом:
bool IsPermittedAccess(PrincipalPermissionAttribute rule, IPrincipal user)
{
// return ?
throw new NotImplementedException();
}
Я оставлю последнюю задачу - решить, соответствует ли пользователь требованиям атрибута или нет. Я не достаточно знаком с этой частью структуры. Также вы можете иметь дело с обработкой ошибок (например, метод с таким именем не существует).
Я также добавлю, что вы, вероятно, захотите кэшировать (возможно, в статическом поле) результаты отражения метода, поскольку он никогда не изменится. Вы также должны быть уверены, что ваша модель представления запускает уведомления об изменении свойств при изменении принципала или коллекции ролей принципала (то есть, если это происходит при изменении документа).