我想在 Castle Monorail 上使用 Ninject 2。在谷歌上搜索,我没有发现任何关于此的信息。
我知道 Windsor 可以神奇地与 Monorail 集成,就像 Ninject(带有 MVC 扩展)和 ASP.NET MVC 一样。
将 DI 框架(Windsor 除外)与 Monorail 集成需要执行哪些步骤?(任何网站链接、教程或代码示例(最好使用 Ninject 2))
仅供参考,我正在使用 C#
我想在 Castle Monorail 上使用 Ninject 2。在谷歌上搜索,我没有发现任何关于此的信息。
我知道 Windsor 可以神奇地与 Monorail 集成,就像 Ninject(带有 MVC 扩展)和 ASP.NET MVC 一样。
将 DI 框架(Windsor 除外)与 Monorail 集成需要执行哪些步骤?(任何网站链接、教程或代码示例(最好使用 Ninject 2))
仅供参考,我正在使用 C#
我不认为有任何关于此的文档,但这真的很简单。它没有魔法。由于 MonoRail 和 Windsor 是完全独立的项目,您所要做的就是看看它们是如何集成的,然后对 Ninject 而不是 Windsor 做同样的事情。
更具体地说,从作为集成基础的MonoRailFacility开始。您将使用 Ninject 模块,而不是 Windsor 设施。请注意,它注册了一些组件:IControllerTree、IWizardPageFactory 等。最重要的是 IControllerFactory,它允许您从容器中解析控制器(在您的情况下为 Ninject)。您可以暂时保留所有其他默认设置(例如 IFilterFactory/DefaultFilterFactory),并根据需要实现它们(即当您需要容器控制过滤器时)。
然后调用ServiceProviderLocator.Instance.AddLocatorStrategy(new NinjectAccessorStrategy());
whereNinjectAccessorStrategy
是一个实现,IAccessorStrategy
它以 a 形式返回 Ninject 内核Castle.Core.IServiceProviderEx
(这不过是 的一个微不足道的扩展System.IServiceProvider
)。由于 Ninject 内核已经实现IServiceProvider
了,为IServiceProviderEx
.