2016-04-19 7 views
0

как использовать метод invocation как класс Action, включая его аргументы? Возможно ли это?Замок Виндзор - метод перехвата и отбрасывает его в класс действия

Queue<Action> queue = new Queue<Action>(); 

выборочный метод, чтобы быть перехвачены:

public string DoSomeStuff(string[] arr) 
{ 
    //some logic here 
} 

перехватчик (замок Виндзор):

public class MyInterceptor : IInterceptor 
{ 
    public void Intercept(IInvocation invocation) 
    { 
     if (queue.Count > 0) 
     { 
      queue.Enqueue(() => { 
       //here, add intercepted method (DoSomeStuff) and its parameters 
      }); 
     }     
    } 
} 

ответ

1

Enqueuing прямо вперед:

public void Intercept(IInvocation invocation) 
{ 
    queue.Enqueue(invocation.Proceed); 
    ... 
} 

Но это довольно бессмысленно так как у вас будет дождаться, пока делегат будет удален и вызван, прежде чем вернуться из вашего метода Intercept().