Ninject, дополнение proxy-класса - C#
Формулировка задачи:
Есть код:Во второй строке объект 'unit' получается типа 'Castle.Proxies.SomeUnitProxy', что нужно для реализации перехвата вызовов.
Возможно ли как-то штатными средствами встроиться в процесс генерации типа 'SomeUnitProxy' и дополнить его своим функционалом до того, как контейнер создасть экземпляр?
Сейчас это выглядит так:И это не очень удобно, т.к. приходится каждый раз помнить, что для данного конкретного типа нужен дополнительный вызов, приходится явное приведение типа писать и выглядит такая запись намного более громоздко.
IKernel kernel = new StandardKernel();
SomeUnit unit = kernel.Get<SomeUnit>(); 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");
}
}