依赖注入和运行时构造函数参数

时间:2016-06-07 18:09:45

标签: c# dependency-injection

我将用一个非常简单的例子来描述我的问题。让我们说我有一个类来处理数据库调用

public class DatabaseAccessLayer : IDatabaseAccessLayer
{
    public DatabaseAccessLayer(string uid, string password, string server)
    {
        // build connection object and so on
    }
}

然后我有一个课程来使用它

public class MyBusinessService : IBusinessService
{
    public MyBusinessService(IDatabaseAccessLayer dal)
    {
    }
}

如果我以Unity为例,我通常会以这种方式连接IoC容器

container.RegisterType<IDatabaseAccessLayer, DatabaseAccessLayer>(new InjectionConstructor("my_uid", "my_password", "my_server"));
container.RegisterType<IBusinessService, MyBusinessService>();

如果在应用程序启动时设置IoC容器时将参数定义为已知值,则效果很好,例如典型的Web应用程序在配置文件中具有值。

但是,我必须为每个业务服务调用将参数(uid,密码,服务器)传递给数据访问层类,因为每次都可能有不同的值。在这种情况下,我似乎无法使用IoC容器。

任何人都有一些意见,在这种情况下我会放弃IoC容器还是有更好的方法来使用IoC容器?

0 个答案:

没有答案