Ninject, дополнение proxy-класса - C#

Узнай цену своей работы

Формулировка задачи:

Есть код:
            IKernel kernel = new StandardKernel();
            SomeUnit unit = kernel.Get<SomeUnit>();
Во второй строке объект 'unit' получается типа 'Castle.Proxies.SomeUnitProxy', что нужно для реализации перехвата вызовов. Возможно ли как-то штатными средствами встроиться в процесс генерации типа 'SomeUnitProxy' и дополнить его своим функционалом до того, как контейнер создасть экземпляр? Сейчас это выглядит так:
            IKernel kernel = new StandardKernel();
            SomeUnit unit = (SomeUnit)kernel.Get(myProxyService.GetProxy(typeof(SomeUnit)));
И это не очень удобно, т.к. приходится каждый раз помнить, что для данного конкретного типа нужен дополнительный вызов, приходится явное приведение типа писать и выглядит такая запись намного более громоздко.

Решение задачи: «Ninject, дополнение proxy-класса»

textual
Листинг программы
public class FooInterceptor : IInterceptor
    {
        public FooInterceptor()
        {
            Console.WriteLine("init");
        }
 
        public void Intercept(IInvocation invocation)
        {
            Console.WriteLine("before");
            invocation.Proceed();
            Console.WriteLine("after");
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы