Совместная работа SNAP (AOP), NInject и ASP.Net MVC 3 - PullRequest
1 голос
/ 01 марта 2011

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

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

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

1 Ответ

4 голосов
/ 02 марта 2011

Я понял это с помощью последней версии 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;</p>

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

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

Надеюсь, это кому-нибудь поможет.

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

...