【发布时间】:2014-02-27 17:07:05
【问题描述】:
我喜欢用 Ninject 自动绑定来绑定下面的代码。是否可以在单个项目中同时使用手动和自动绑定?让我们来看看手动绑定,我想用自动绑定来实现。请告诉我如何实现这一目标。
kernel.Bind<TestContext>().ToSelf().InRequestScope();kernel.Bind<IUnitOfWork<TestContext>>().To<UnitOfWork<TestContext>>();
下面是从基础接口继承的所有接口:IRepository
3 . kernel.Bind<IUserRepository>().To<UserRepository>();
4 。 kernel.Bind<IAccountRepository>().To<AccountRepository>();
5 . kernel.Bind<IMessageRepository>().To<MessageRepository>().WithConstructorArgument("apikey", AppSettingsManager.GetSmsApiKey)
附加
是否需要为多个课程写.Exclude<MessageRepository>() 如果我需要这样做,例如
.Exclude<ARepository>()
.Exclude<BRepository>()
.Exclude<CRepository>()?
对于 1 和 2 是否需要单独手动绑定?或 1 可以使用 BindToSelf()' and.Configure(b => b.InRequestScope())` ?
【问题讨论】:
-
对于 1. 和 2. 您应该使用单独的绑定。理论上,您可以使用约定并告诉它将整个程序集中的所有类绑定到其默认接口,但从中长期来看,这将导致比指定具体的单一绑定更复杂。另请注意,您可以使用多个常规绑定!
标签: c# dependency-injection ninject ninject.web.mvc ninject-extensions