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

har*_*ang 6 c# dependency-injection

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

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

然后我有一个类来使用它

public class MyBusinessService : IBusinessService
{
    public MyBusinessService(IDatabaseAccessLayer dal)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

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

container.RegisterType<IDatabaseAccessLayer, DatabaseAccessLayer>(new InjectionConstructor("my_uid", "my_password", "my_server"));
container.RegisterType<IBusinessService, MyBusinessService>();
Run Code Online (Sandbox Code Playgroud)

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

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

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