使用DI绑定循环连接字符串构造函数参数 [英] Binding recurring connection string constructor parameters using DI
问题描述
我正在寻找有关如何最好地绑定一对连接的建议 整个依赖项中都重复出现的字符串.
I'm looking for advice on how best to bind a couple of connection strings which recur throughout my dependencies.
目前,我有(使用ninject):
Currently I have (using ninject):
Bind<IFoo>().To<SqlFoo>()
.WithConstructorArgument("db1ConnStr", db1ConnectionString)
.WithConstructorArgument("db2ConnStr", db2ConnectionString);
Bind<IBar>().To<SqlBar>()
.WithConstructorArgument("db1ConnStr", db1ConnectionString)
.WithConstructorArgument("db2ConnStr", db2ConnectionString);
等
这显然不是最优雅的代码.
which obviously is not the most elegant code.
是否可以将db1ConnectionString的值绑定到名为"db1ConnStr"的每个字符串构造函数参数上?
Is there a way to bind the value of db1ConnectionString to every string constructor parameter named "db1ConnStr"?
推荐答案
我将创建一个包含连接字符串的类:
I would create a class which holds the connection strings:
public class ConnectionStringProvider
{
public string Db1ConnectionString { get; set; }
public string Db2ConnectionString { get; set; }
}
注意:如果需要,您还可以为其创建接口IConnectionStringProvider
.
Note: You can also create an interface IConnectionStringProvider
for it if you want.
然后类SqlFoo
和SqlBar
可以将其用作依赖项
Then the classes SqlFoo
and SqlBar
can use it as a dependency
public class SqlFoo
{
public SqlFoo(ConnectionStringProvider connectionStringProvider)
{
//do something with connectionStringProvider.Db1ConnectionString
}
}
注册看起来像这样:
Bind<ConnectionStringProvider>().ToConstant(
new ConnectionStringProvider
{
Db1ConnectionString = db1ConnectionString,
Db2ConnectionString = db2ConnectionString,
});
Bind<IFoo>().To<SqlFoo>();
Bind<IBar>().To<SqlBar>();
这篇关于使用DI绑定循环连接字符串构造函数参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!