1

有没有人让 SNAP AOP 框架与 MVC 3 和 Ninject 一起工作。

使用 NuGet 将 Snap 添加到 MVC 3 项目时给出的示例不适用于以前添加的 NInject 包。我试图让它基于正常的 NInject 方法工作,但无法让它真正拦截!

任何人都可以在代码中展示如何做到这一点吗?

4

1 回答 1

4

我通过 NuGet 使用最新版本的 Ninject 解决了这个问题,它现在在 MVC3 应用程序的新 AppStart 文件夹中添加了一个类调用 NinjectMVC3。

我使用的代码如下:在自动创建的 NinjectMVC3.cs CreateKernel() 方法中:-

         私有静态 IKernel CreateKernel()
        {
            // 用 AOP 连接它
            NinjectAopConfiguration.NinjectAopConfigure();

            //var kernel = new StandardKernel(); // 移除

            RegisterServices(NinjectAopConfiguration._container.Kernel);

            返回 NinjectAopConfiguration._container.Kernel;
        }

我还在 RegisterServices() 方法中为各种注入目标连接了 Ninject。

接下来,我在将 SNAP.Ninject 添加到 MVC 3 应用程序时,将 NuGet 生成的示例代码重命名为 NinjectAOP.cs 并使其如下所示:

公共静态类 NinjectAopConfiguration
    {
        公共只读静态 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 在某处存在程序集版本冲突:

我希望这可以帮助别人。

我邀请任何人看看,看看他们是否可以改进这一点。

于 2011-03-02T13:43:24.677 回答