2015-07-08 7 views
0

Я хочу записать определенную информацию о выполняемых методах, я рассмотрел AOP, который был в порядке, выбил демоверсию, но мне действительно нужно регистрировать конкретную информацию о каждом методе, подумать об этом как дополнительную информацию, связанную с вызов.Журналы по перекрестным контактам

Теперь варианты я рассмотрел, где просто зарегистрировать ее в каждом методе, но я думаю, что его будет загрязнять код, в крайнем случае, возможно,

Или я создать класс, который отображает методы к информации, которая должна быть авторизованы , и использовать AOP для регистрации этой информации.

Что вы, ребята, думаете?

+0

У вас есть конкретный пример того, что будет отличаться в каждом методе? – plalx

ответ

0

Альтернативный подход может быть Decorator pattern/Interceptor pattern но приводит к увеличению усилий по кодированию:

interface IComponent 
{ 
    int Foo(int input); 
} 

class Component : IComponent 
{ 
    public int Foo(int input) 
    { 
     return input * 2; 
    } 
} 

class LoggingComponent: IComponent 
{ 
    private readonly IComponent target; 

    public LoggingComponent(IComponent target) 
    { 
     this.target = target; 
    } 

    public int Foo(int input) 
    { 
     // ToDo: Add logging before method call 

     int returnValue = this.target.Foo(input); 

     // ToDo: Add logging after method call 

     return returnValue; 
    } 
} 

Используя этот подход требует реализации много классов лесозаготовок для всех целей, которые вы хотите, чтобы войти вызовы методов и ввод/возвращаемые значения. Кроме того, вы не можете регистрировать то, что происходит внутри методов цели, на которые отправляется декоратор/перехватчик.

0

Вы также можете подумать об использовании шаблона контекстного окружения для реализации сквозных задач. Есть хороший блог об этом: Ambient Context.

 Смежные вопросы

  • Нет связанных вопросов^_^