我将用一个非常简单的例子来描述我的问题。让我们说我有一个类来处理数据库调用
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容器?