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

时间:2011-05-19 00:14:07

标签: c# asp.net-mvc dependency-injection unity-container ioc-container

我有一个Controller的MVC应用,需要IDomainServiceDomainService类构造函数采用IRepository 并且Repository类构造函数需要连接字符串。

我有这样的事情:

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")));

然而,这不起作用。

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

感谢。

1 个答案:

答案 0 :(得分:6)

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

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

c.RegisterType<IConnectionFactory, AppConfigConnectionFactory>();
c.RegisterType<IDepartmentRepository, DepartmentRepository>();

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