我在MVC3应用程序中使用Ninject,并尝试切换到基于约定的绑定与ninject.extensions.conventions。
现在假设我有一个需要访问应用程序设置的类,例如:
public class Foo : IFoo
{
public Foo(string connectionString)
{ ... }
}
我想我明白了如何与Ninject进行正常绑定:
Bind<IFoo>()
.To<Foo>()
.WithConstructorArgument(
"connectionString",
ConfigurationManager.ConnectionStrings["Default"].ConnectionString);
但是如何使用惯例代替呢?
如果需要,可提供额外信息:
我正在使用nuget Ninject.MVC3软件包,在App_Start / NinjectWebCommon.cs的RegisterServices中,这是我目前所拥有的:
kernel.Bind(x => x
.FromAssembliesMatching("*")
.SelectAllClasses()
.BindDefaultInterface());
答案 0 :(得分:1)
Ninject Conventions可以为您提供90%的工作,费用为10%。如果您认为需要在其上添加额外的绑定,请不要担心。
但是在你的场景中,我不会太担心不通过构造函数注入连接字符串而只是手动抓取它。或者,您可以设置一个IDatabaseConfig接口和实现,它可以为您完成,您的基于约定的绑定应该只是选择它。我们在项目的后期做了