我如何从Castle.DynamicProxy获取使用IInterceptor调用动作的元素的名称

时间:2019-05-06 04:27:47

标签: c# reflection aop interceptor castle-dynamicproxy

因此,我要做的几乎是一个使用IInterceptor名称空间中的Castle.DynamicProxy接口记录某些元素操作并将其保存到文件的方面。

我所看到的实现如下所述。

我正在拦截的界面类型操作如下:

public interface IPageElement
{
   bool Visible { get; }
   void Select();
   ...
}

我有一个类,它的功能是用作创建类型IPageElement的对象的工厂。因此,每次调用工厂方法时,我都会使用CreateInterfaceProxyWithTarget<T>通过以下方式返回一个proxy元素:

return ProxyGenerator()
   .CreateInterfaceProxyWithTarget<IPageElement>(
      elementToProxy,
      new MyInterceptor(elementToProxy));

您猜想,MyInterceptor类实现了IInterceptor中的Castle.DynamicProxy接口。因此,我想知道的是如何获取被拦截的IPageElement对象的名称。

通过使用Intercept方法具有的IInvocation参数,我设法获取了它调用的方法,参数(如果有的话)等。

invocation.Method; // for the method
invocation.Arguments;  // for the arguments of the method

尝试了IInvocation的其他方法/属性,但没有运气。

任何帮助或建议都将不胜感激:) 谢谢你。

0 个答案:

没有答案