UnityContainer - 如何注册/解决与依赖关系链接

问题描述:

我有一个MVC应用程序Controller需要IDomainServiceDomainService类构造函数需要一个IRepositoryRepository类构造函数需要一个连接字符串。UnityContainer - 如何注册/解决与依赖关系链接

我有这样的事情:

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

但是,这是行不通的。

我做错了什么?我对存储库注入没有任何问题,但是我无法注入(通过存储库)注入域服务。

谢谢。

我通常添加一个小的类此:

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

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

不要依赖于字符串,如果你不就得了。此外,您还可以通过此解决方案避免每个存储库中的代码重复。

+0

谢谢,这工作像一个魅力。 – Raymond 2011-05-19 16:10:43

+0

我喜欢你的方法。它非常干净。 +1。 – Steven 2011-05-19 18:07:12