我刚刚尝试开始使用Ninject 2和ASP.NET MVC 2.我按照本教程http://www.craftyfella.com/2010/02/creating-aspnet-mvc-2-controller.html创建了一个包含Ninject的Controller Factory并绑定第一个抽象的具体实现。现在我想从另一个程序集(我的具体SQL存储库所在的位置)加载一个存储库类型,我不能让它工作。这里是我的代码:Ninject 2 + ASP.NET MVC 2来自外部程序集的绑定类型
的Global.asax.cs
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory());
}
器厂:
public class Kernelhelper
{
public static IKernel GetTheKernel()
{
IKernel kernel = new StandardKernel();
kernel.Load(System.Reflection.Assembly.Load("MyAssembly"));
return kernel;
}
}
public class MyControllerFactory : DefaultControllerFactory
{
private IKernel kernel = Kernelhelper.GetTheKernel();
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null ? null : (IController)kernel.Get(controllerType);
}
}
在 “MyAssembly程序” 有一个模块:
public class ExampleConfigModule : NinjectModule
{
public override void Load()
{
Bind<Domain.CommunityUserRepository>().To<SQLCommunityUserRepository>();
}
}
现在,当我刚在我的入口点上使用MockRepository对象时,它工作得很好,需要存储库的控制器工作正常。 kernel.Load(System.Reflection.Assembly.Load(“MyAssembly”));也做它的工作和注册模块,但只要我呼吁需要存储库的控制器我从Ninject得到一个ActivationException:
没有匹配的绑定可用,并且类型不可自行绑定。 激活路径:依赖CommunityUserRepository的 2)注入型的AccountController 1)要求的AccountController
的构造函数的参数_rep谁能给我从外部组件绑定类型最佳实践范例(这确实是一个重要的方面依赖注入)?谢谢!
愚蠢的我,具体实现的构造函数需要一个连接字符串。现在我必须找出如何告诉Ninject ... – hoetz 2010-04-10 08:20:14