Как проанализировать атрибут при вызове метода? - PullRequest
0 голосов
/ 15 января 2012

У меня есть объект с несколькими методами.Некоторые из которых украшены атрибутом [AuthenticationRequired].Когда и как я должен проверять, аутентифицирован ли вызываемый объект?

Это просто простая проверка null, но я не знаю, как подключить его к фактическим вызовам методов.Я немного растерялся здесь.

Do I:

  1. Используйте StackFrame , определите метод верхнего уровня, вызываемый для этого класса, а затем вычислитевозможные проблемы с аутентификацией?
  2. Включить эту проверку в каждый метод с атрибутом?Тогда для чего этот атрибут хорош?
  3. Каким-то образом подключитесь ко всем вызовам методов в моем классе, выясняя, есть ли у них атрибут?

Структура класса примерно такая:

public class Stuff
{
     public void ImFine()
     {
         CommonMethod("fine");
     }

     public void ImGood()
     {
         CommonMethod("good");
     }

     [AuthenticationRequired]
     public void ImTerrible()
     {
         CommonMethod("terrible", true); // not an optional parameter.
     }

     [AuthenticationRequired]
     public void ImDeceased()
     {
         CommonMethod("dead");
     }

     protected void CommonMethod(string state)
     {
         Console.WriteLine(string.Format("I feel {0}", state));
     }

     protected void CommonMethod(string state, bool pet)
     {
         if (pet)
         {
             Console.WriteLine(string.Format("My pet feels {0}", state));
         }
         else
         {
             Console.WriteLine(string.Format("I feel {0}", state));
         }
     }
}

Предположим, CommonMethod чуть сложнее, и один не может вызвать другой (для того, чтобы один метод был общим для каждого вызываемого).

1 Ответ

1 голос
/ 15 января 2012

Задумывались ли вы о аспектно-ориентированном программировании?Вы можете взглянуть на некоторые реализации, а именно: PostSharp или Castle .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...