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容器?