如何将方法调用转换为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
});
}
}
}
答案 0 :(得分:1)
排队是直截了当的:
public void Intercept(IInvocation invocation)
{
queue.Enqueue(invocation.Proceed);
...
}
但这是毫无意义的,因为在从Intercept()方法返回之前,您必须等到委托出列并调用。