c# - UnityContainer - 如何使用依赖链注册/解析

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

我有一个 MVC 应用程序,它具有采用 IDomainServiceControllerDomainService 类构造函数采用 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")));

但是,这不起作用。

我做错了什么吗?我对存储库注入(inject)没问题,但我无法让我的域服务(通过存储库)注入(inject)工作。

谢谢。

最佳答案

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

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

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

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

关于c# - UnityContainer - 如何使用依赖链注册/解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6052461/

相关文章:

c# - 如何将html代码加载到c#字符串中?

c# - Asp.NET MVC REST API : How to get Client Host Name

c# - 我可以在 Entity Framework SubQuery 中使用扩展方法吗?

c# - POST 到 C# 时 JSON 对象为空

c# - 根据属性显示/隐藏网格行?

c# - .NET Core 2.0 - 来自 BlogItem 的 BlogCategory

c# - 接口(interface)属性的Unity按需解析

dependency-injection - 使用服务层时配置 IoC 容器的正确层是什么?

javascript - Angular 2 注入(inject)器层次结构和 NgModule

c# - 如何从 MahApps.Metro 将带有操作的按钮添加到 ShowInputAsync