我使用 nuget 模板方式对我的 MVC3 应用程序进行 ninject,这意味着我已经使用 WebActivator 调用静态类上的方法,该方法反过来创建 Ninject 引导程序并连接到 MVC3。
这适用于控制器、适配器等。但我想要另一个 Webactivator 激活类,它使用 Ninject 获取其依赖项。
我让它与一个糟糕的解决方案一起工作,但我更喜欢一个更优雅的解决方案。
首先,我确保我的 Webactivator 类使用 PostApplicationStartMethod 调用,因为 Ninject 模块使用 PreApplicationStartMethod 我可以确保 ninject 已加载并准备就绪。然后在 Start 方法中我做
var workers = DependencyResolver.Current.GetServices<IWorker>();
为了获得我的依赖,整个类看起来像这样
[assembly: WebActivator.PostApplicationStartMethod(typeof(SHB.DALA.Web.App_Start.WorkflowRunner), "Start")]
namespace SHB.DALA.Web.App_Start
{
public static class WorkflowRunner
{
public static void Start()
{
var workers = DependencyResolver.Current.GetServices<IWorker>();
//Do stuff with worker collection
}
}
}
一定有更优雅的解决方案吧?