метод расширения для метода C#
Есть ли способ иметь метод расширения на методе? Примером для этого может быть метод, который принимает некоторый объект пользователя в качестве параметра, и вам нужно сделать проверку безопасности, если этот пользователь может использовать этот метод в самом начале метода. Может ли метод иметь метод расширения, такой как" проверить, может ли этот пользователь использовать меня " и вернуть bool.
Спасибо.
6 ответов:
Вы можете использоватьаспектно-ориентированное программирование (AOP) для реализации сквозных проверок безопасности в коде.
В .NET у вас есть выбор из нескольких фреймворков AOP, например:
В частности, в документации PostSharp есть несколько хороших примеров того, как реализовать безопасность с помощью AOP.
Вы не можете добавить метод расширения для метода с C#.
Но вы можете использовать аспектно-ориентированное программирование (AOP) , чтобы делать то, что вы хотите, используя PostSharp или Spring.NET например.
Пример методов защиты с помощью PostSharp
public class BusinessDivision : BusinessObject { [SecuredOperation("Manager")] public void EnlistEmployee(Employee employee) { // Details omitted. } }
Я не совсем уверен, что вы ищете, но это пахнет декларативной безопасностью для меня.
Взгляните на: http://msdn.microsoft.com/en-us/library/kaacwy28.aspx
Я не уверен, что хорошо понял ваш вопрос. Однако, как насчет этого:
public static void EnsureUserHasAccess(this object obj) { // check permissions, possibly depending on `obj`'s actual type } public static void DoSomething(this MyClass obj) { // permissions check obj.EnsureUserHasAccess(); // do something about `obj` … } public static void DoSomethingElse(this MyDifferentClass obj) { // permissions check obj.EnsureUserHasAccess(); // do something about `obj` … }
Методы расширения В C# - это не расширения методов (не уверен, что я понимаю, что это значит), а методы, расширяющие объекты/классы.
Если вы хотите ввести в код описываемые проверки, вы можете посмотреть на PostSharp и AOP .