我正在寻找有关如何最好地绑定几个连接的建议 在我的依赖项中重复的字符串。
目前我有(使用ninject):
Bind<IFoo>().To<SqlFoo>()
.WithConstructorArgument("db1ConnStr", db1ConnectionString)
.WithConstructorArgument("db2ConnStr", db2ConnectionString);
Bind<IBar>().To<SqlBar>()
.WithConstructorArgument("db1ConnStr", db1ConnectionString)
.WithConstructorArgument("db2ConnStr", db2ConnectionString);
等
这显然不是最优雅的代码。
有没有办法将db1ConnectionString的值绑定到名为“db1ConnStr”的每个字符串构造函数参数?
答案 0 :(得分:2)
我会创建一个包含连接字符串的类:
public class ConnectionStringProvider
{
public string Db1ConnectionString { get; set; }
public string Db2ConnectionString { get; set; }
}
注意:如果需要,您还可以为其创建界面IConnectionStringProvider
。
然后,类SqlFoo
和SqlBar
可以将其用作依赖项
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>();