我在ASP.NET MVC项目中使用Ninject进行依赖注入。我有很多存储库类,每个类都在构造函数中使用连接字符串参数。
目前,对于每个映射,我也要传递连接字符串。
实施例
Bind<INewsRepository>().To<NewsRepository>().WithConstructorArgument("connectionString", "Data Source=...");
Bind<IProductsRepository>().To<ProductsRepository>().WithConstructorArgument("connectionString", "Data Source=...");
是否可以绑定&#34; connectionString&#34;直接到全局级别的配置值,而不是在每个绑定时指定?
答案 0 :(得分:4)
我的解决方案是: 将connectionstring包装在一个对象中,比如说ConnectionStringWrapper并创建一个Interface IConnectionStringWrapper。使用存储库中的接口,并使用Ninjects将ConnectionStringWrapper绑定到接口。
答案 1 :(得分:3)
这是我提出的最好的
创建扩展方法
public static class IBindingExtensions
{
public static IBindingWithOrOnSyntax<T> WithConnectionString<T>(this IBindingWhenInNamedWithOrOnSyntax<T> binding)
{
return binding.WithConstructorArgument("connectionString", "Data Source=..");
}
}
并为每个连接字符串参数绑定
调用它Bind<INewsRepository>().To<NewsRepository>().WithConnectionString();