Совместная работа SNAP(AOP), NInject и ASP.Net MVC 3

Кто-нибудь получил структуру SNAP AOP, работающую с MVC 3 и Ninject.

Примеры, приведенные при добавлении Snap с помощью NuGet в проект MVC 3, плохо работают с ранее добавленным пакетом NInject. Я пытался заставить его работать на основе обычного подхода NInject, но просто не смог заставить его перехватить!

Может ли кто-нибудь показать, как это сделать в коде, пожалуйста?


person Redeemed1    schedule 01.03.2011    source источник


Ответы (1)


Я понял это с последней версией Ninject через NuGet, которая теперь добавляет вызов класса NinjectMVC3 в новую папку AppStart в приложении MVC3.

Код, который я использовал, выглядит следующим образом: В автоматически созданном методе NinjectMVC3.cs CreateKernel():

         private static IKernel CreateKernel()
        {
            // Wire it up with AOP
            NinjectAopConfiguration.NinjectAopConfigure();

            //var kernel = new StandardKernel(); // Removed

            RegisterServices(NinjectAopConfiguration._container.Kernel);

            return NinjectAopConfiguration._container.Kernel;
        }

Я также подключил Ninject для различных целей внедрения в методе RegisterServices().

Затем я взял образец кода, сгенерированный NuGet при добавлении SNAP.Ninject в приложение MVC 3, переименовал его в NinjectAOP.cs и сделал так:

 public static class NinjectAopConfiguration
    {
        public readonly static NinjectAspectContainer _container;

static NinjectAopConfiguration() { _container = new NinjectAspectContainer(); } public static void NinjectAopConfigure() { SnapConfiguration.For(_container).Configure(c => { c.IncludeNamespace("MyNamespace.Model.*"); c.Bind<ExceptionLoggingInterceptor>().To<ExceptionLoggingAttribute>(); }); } }

Мне также нужно было сделать перенаправление привязки сборки для Ninject следующим образом, потому что где-то для Ninject существует конфликт версии сборки:

Я надеюсь, что это помогает кому-то.

Я приглашаю всех взглянуть и посмотреть, могут ли они улучшить это, пожалуйста.

person Redeemed1    schedule 02.03.2011