Как подключить модуль перехвата Ninject?

У меня есть Ninject, Ninject.Extensions.Interception и Ninject.Extensions.Interception.DynamicProxy, установленные через NuGet, и у меня есть следующий модуль

public class InterceptAllModule : InterceptionModule
{
    public override void Load()
    {
        Kernel.Intercept(p => (true)).With(new TimingInterceptor());
    }
}

Где находится TimingInterceptor

public class TimingInterceptor : SimpleInterceptor
{
    readonly Stopwatch _stopwatch = new Stopwatch();
    protected override void BeforeInvoke(IInvocation invocation)
    {
        _stopwatch.Start();
    }

    protected override void AfterInvoke(IInvocation invocation)
    {
        _stopwatch.Stop();
        string message = string.Format("[Execution of {0} took {1}.]",invocation.Request.Method,_stopwatch.Elapsed);
        Log.Info(message + "\n");
        _stopwatch.Reset();
    }
}

Теперь, когда я пытаюсь подключить модуль к ядру ninject и запустить свой сайт

var kernel = new StandardKernel(new InterceptAllModule());

Я получил следующую ошибку,

Could not load type 'Castle.Proxies.Func`1Proxy' from assembly 'DynamicProxyGenAssembly2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=a621a9e7e5c32e69' because the parent type is sealed.

В основном я пытаюсь вести журнал для своего приложения ASP.NET MVC всякий раз, когда вызывается метод действия. Я хочу регистрировать определенные вещи. Но не знаю, как обойти эту ошибку. Может ли кто-нибудь с опытом указать, что я делаю неправильно, пожалуйста? Спасибо.


person Ray    schedule 27.12.2012    source источник
comment
Бьюсь об заклад, p => (true) означает «перехватывать все», и теперь Ninject пытается перехватить запечатанный тип. Вы регистрируете конкретный (герметичный) тип AsSelf()?   -  person Steven    schedule 27.12.2012
comment
Спасибо, Стивен, ты прав. Я должен переформулировать свой вопрос, как настроить перехват с помощью ninject для всех вызовов метода действия контроллера? У вас случайно нет строк кода, которые могли бы показать мне в этом отношении? Большое спасибо!   -  person Ray    schedule 28.12.2012
comment
Мне жаль. Не могу помочь с этим. Попробуйте использовать IntelliSense для этого аргумента p.   -  person Steven    schedule 28.12.2012
comment
Здесь вы можете найти довольно подробный пример реализации: -with-nin" title="как перехватить все вызовы методов действий контроллера asp net webapi с помощью nin"> stackoverflow.com/questions/14062028/   -  person Sebastian Meier    schedule 21.03.2015