在IoC模式中如何保持连接线之类的东西?

Bor*_*ens 5 .net c# configuration ioc-container

在我不断追求减少的时候,我正在检查mvc Turbine做IoC肮脏的工作.
我正在使用mvc Turbine书呆子晚餐的例子作为领导,到目前为止事情看起来相当合乎逻辑.虽然我在这里指的是涡轮机项目,但我猜测它背后的哲学是一些普遍的模式安全的一些阅读和罕见的播客,我是IoC概念的新手,我有几个问题.

到目前为止,我为每个要注册的IRepository都有一个IServiceRegistration条目
例如:

public class UserRepositoryRegistration : IServiceRegistration
{
    public void Register(IServiceLocator locator)
    {
        locator.Register<IUserRepository, UserRepository>();
    }
}
Run Code Online (Sandbox Code Playgroud)

IUserRepository的具体实现需要一些配置.类似于连接字符串的东西,或者在这种情况下是要使用的db4o文件的路径.

我应该在哪里以及向谁提供这些信息?

小智 3

罗伯特和卢卡斯的回答都一语中的。该帐户的所有“额外内容”都将位于 UserRepository 类中。这是当前 Turbine ND 的实现方式。

但是,没有什么可以阻止您创建一个名为 ConnectionStringProvider 的新类,然后可以将其“注入”到 UserRepository 中,该类将提供连接字符串(无论是硬编码还是从配置文件中读取)。

代码可以如下:

public class ConnectionStringProvider {
    public string ConnectionString {
        get{
             // your impl here
        }
    }
}

public class UserRepository {
   public UserRepository(ConnectionStringProvider provider){
        // set internal field here to use later
        // with db connection
   }
}
Run Code Online (Sandbox Code Playgroud)

从这里,您可以在 UserRepositoryRegistration 类中添加 ConnectionStringProvider 的注册,Turbine 将为您处理其余的事情。