使用DI绑定循环连接字符串构造函数参数 [英] Binding recurring connection string constructor parameters using DI

查看:115
本文介绍了使用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.

然后类SqlFooSqlBar可以将其用作依赖项

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆