我在寻找咨询关于如何最好地结合一对夫妇,其再次出现在我的依赖性连接字符串。
目前,我有(使用ninject):
Bind<IFoo>().To<SqlFoo>()
.WithConstructorArgument("db1ConnStr", db1ConnectionString)
.WithConstructorArgument("db2ConnStr", db2ConnectionString);
Bind<IBar>().To<SqlBar>()
.WithConstructorArgument("db1ConnStr", db1ConnectionString)
.WithConstructorArgument("db2ConnStr", db2ConnectionString);
等等
这显然不是最优雅的代码。
有没有绑定db1ConnectionString名为“db1ConnStr”每个字符串构造函数参数的值的方法吗?
我想创建持有的连接字符串类:
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>();