Я хотел бы создать валидатор на основе атрибутов, который идет на несколько шагов дальше того, что я видел в примерах. Это в основном предотвратит выполнение методов или других функций.
Обратите внимание, что мне приходится использовать AzMan , поскольку у меня нет доступа к Active Directory в этом сценарии.
Вот некоторый псевдокод того, что я ищу:
// Attribute validator class AttributeUsage is arbitrary at this point and may include other items
[AttributeUsage( AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true, Inherited = true )]
public class PermissionsValidatorAttribute : Attribute
{
public PermissionsValidatorAttribute(PermissionEnumeration permission){...}
public bool UserCanCreateAndEdit(){...}
public bool UserCanDelete(){...}
public bool UserCanUpload(){...}
}
Вот образец класса / члена, который будет украшен. Метод не будет выполнен вообще, если PermissionValidator.UserCanDelete () не возвращает true, где бы он ни выполнялся:
public class DoStuffNeedingPermissions
{
[PermissionValidator(PermissionEnumeration.MustHaveDeletePermission)]
public void DeleteSomething(){...}
}
Я знаю, что это простой, неполный пример. Но вы должны понять суть того, что мне нужно. Сделайте предположение, что DeleteSomething () уже существует, и я предпочитаю НЕ изменять код в методе вообще.
В настоящее время я смотрю на такие вещи, как блок приложения проверки, и работаю с пользовательскими атрибутами POC. Но я хотел бы услышать мнения с примерами кода от всех там. Я также определенно не против других методов достижения того же самого, таких как методы расширения или что-то еще, что может работать для достижения того же самого. Пожалуйста, помните, что я делаю попытку минимизировать изменения в существующем коде DoStuffNeedingPermissions. Спасибо всем!