我有一个 ASP.NET MVC 项目,它使用服务项目通过一组接口(interface)(项目)到达存储库项目。
我有点困惑在哪里使用 Ninject。在我看来,我将我的 Ninject 包含在服务层中似乎是合乎逻辑的,因为这是我与接口(interface)交互的地方。
我的问题是如何实现?另外,其他人是如何实现的?
最佳答案
在您的服务项目中,您需要创建一个派生自 NinjectModule 的类并覆盖 Load 方法;此类的职责是向 Ninject 注册您的依赖项。
public class ServiceModule : NinjectModule
{
public override void Load() {
Bind<IAccountService>().To<AccountService>();
}
}
然后,您需要创建一个继承自 NinjectHttpApplication 的 Application 类。覆盖 CreateKernel 方法并从您的服务项目中注册 NinjectModule(以及您可能需要注册的任何其他方法)。
public class MvcApplication : NinjectHttpApplication
{
protected override void OnApplicationStarted() {
RegisterRoutes(RouteTable.Routes);
RegisterAllControllersIn(Assembly.GetExecutingAssembly());
}
protected override IKernel CreateKernel() {
var modules = new INinjectModule[] {
new MyProject.Services.ServiceModule(),
new MyProject.Data.DataModule()
};
var kernel = new StandardKernel(modules);
return kernel;
}
关于c# - 将 Ninject 与 ASP.NET MVC 和服务层结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3257534/