UnityContainer - 如何通过依赖链接进行注册/解析

Ray*_*ond 1 c# asp.net-mvc dependency-injection ioc-container unity-container

我有一个MVC应用程序Controller需要一个IDomainService.在DomainService类的构造函数需要一个IRepositoryRepository类的构造函数需要一个连接字符串.

我有这样的事情:

string connectionString = ConfigurationManager
    .ConnectionStrings["ApplicationServices"].ConnectionString;

c.RegisterInstance("ConnectionString", connectionString);

c.RegisterType<IDepartmentRepository, DepartmentRepository>(
    "DepartmentRepository", 
    new InjectionConstructor(connectionString));

c.RegisterType<IDepartmentDomainService, DepartmentService>(
    new InjectionConstructor(
        new ResolvedParameter<IDepartmentRepository>(
            "DepartmentRepository")));
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.

我做错了吗?我对存储库注入没有任何问题,但我无法注入(使用存储库)我的域服务.

谢谢.

jga*_*fin 6

我通常会为此添加一个小类:

public class AppConfigConnectionFactory : IConnectionFactory
{
   public IDbConnection Create() 
   { 
        return new SqlConnection(ConfigurationManager
             .ConnectionStrings["ApplicationServices"].ConnectionString);
   }
}

c.RegisterType<IConnectionFactory, AppConfigConnectionFactory>();
c.RegisterType<IDepartmentRepository, DepartmentRepository>();
Run Code Online (Sandbox Code Playgroud)

如果你不需要,不要依赖字符串.而且,您还可以使用此解决方案避免每个存储库中的代码重复.