结合使用DI经常性的连接字符串参数的构造函数(Binding recurring connectio

2019-10-16 15:54发布

我在寻找咨询关于如何最好地结合一对夫妇,其再次出现在我的依赖性连接字符串。

目前,我有(使用ninject):

Bind<IFoo>().To<SqlFoo>()
.WithConstructorArgument("db1ConnStr", db1ConnectionString)
.WithConstructorArgument("db2ConnStr", db2ConnectionString);

Bind<IBar>().To<SqlBar>()
.WithConstructorArgument("db1ConnStr", db1ConnectionString)
.WithConstructorArgument("db2ConnStr", db2ConnectionString);

等等

这显然不是最优雅的代码。

有没有绑定db1ConnectionString名为“db1ConnStr”每个字符串构造函数参数的值的方法吗?

Answer 1:

我想创建持有的连接字符串类:

public class ConnectionStringProvider
{
    public string Db1ConnectionString { get; set; }
    public string Db2ConnectionString { get; set; }
}

注意:您还可以创建一个接口IConnectionStringProvider它,如果你想要的。

那么类SqlFooSqlBar可以使用它作为一个依赖

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>();


文章来源: Binding recurring connection string constructor parameters using DI