Как получить имя элемента, который вызвал действие, используя IInterceptor из Castle.DynamicProxy - PullRequest
0 голосов
/ 06 мая 2019

Практически все, что я пытаюсь сделать, это аспект использования интерфейса IInterceptor из пространства имен Castle.DynamicProxy для регистрации определенных действий элемента и сохранения их в файл.

У меня есть реализациякак описано ниже.

Действия типа интерфейса, которые я перехватываю, выглядят так:

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

У меня есть класс, функция которого заключается в том, чтобы служить фабрикой для создания объектов типа IPageElement.Таким образом, каждый раз, когда вызывается метод фабрики, я возвращал прокси-элемент, используя CreateInterfaceProxyWithTarget<T>, таким образом:

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

Как вы уже поняли, класс MyInterceptor реализует интерфейс IInterceptor из Castle.DynamicProxy.Итак, я хотел бы знать, как получить имя объекта IPageElement, который перехватывается.

Мне удалось получить метод, который он вызывает, параметры (если есть),и т.д., используя параметр IInvocation, который есть у метода Intercept:

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

Пробовал другие методы / свойства IInvocation, но не удача.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...