使用Castle.DynamicProxy调用2个目标

时间:2010-01-19 00:55:32

标签: castle-dynamicproxy

说我有一个接口IInterface。 假设我有2个相同的IInterface(foo& bar)的实现。 是否可以在两个目标上调用相同的方法?

2 个答案:

答案 0 :(得分:0)

这取决于你如何接近它,

通常它不可能(应该返回哪个返回值?),但是没有什么可以阻止你让另一个目标包含在拦截器中,并让它被拦截器调用。

答案 1 :(得分:0)

我想出了这个,但是它使用反射,所以它不如Y-adapter类型的代理的“本机”支持那么好......

public void Intercept(IInvocation invocation)
{
    invocation.Proceed();
    ThreadPool.QueueUserWorkItem(new WaitCallback(
        (object o) =>
            {
                invocation.Method.Invoke(newTarget, invocation.Arguments);
            }
            )
    );
}

使用QueueUserWorkItem可以保证调用方法的线程在性能方面不会受到太大影响...... 任何更好的解决方案都非常受欢迎!