1

我想在 Castle Monorail 上使用 Ninject 2。在谷歌上搜索,我没有发现任何关于此的信息。

我知道 Windsor 可以神奇地与 Monorail 集成,就像 Ninject(带有 MVC 扩展)和 ASP.NET MVC 一样。

将 DI 框架(Windsor 除外)与 Monorail 集成需要执行哪些步骤?(任何网站链接、教程或代码示例(最好使用 Ninject 2))

仅供参考,我正在使用 C#

4

1 回答 1

2

我不认为有任何关于此的文档,但这真的很简单。它没有魔法。由于 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.

于 2011-05-24T02:42:54.650 回答