代码之家  ›  专栏  ›  技术社区  ›  Corey Coogan

如何注入与IoC的开放连接

  •  2
  • Corey Coogan  · 技术社区  · 16 年前

    首先,我的设想。我有一个服务,BillingService,有这样一个构造函数:

    计费服务(IInstallmentService,IBillingRepository)

    InstallmentService有一个如下所示的构造函数

    InstallmentService(iBillingPostory、IInstallmentCalculator)

    我的计费服务是一种应用服务,这些方法将协调移动部件之间的操作。所有内容都在我的IoC容器中注册,因此我的facade只需解析IBillingService并调用操作即可。

    我的问题是,如何将一个打开的连接从容器传递到BillingRepository,然后在BillingService完成后有效地关闭它?在这个客户,我一直坚持团结。如果我是手写的,它看起来是这样的:

    using(IDbConnection conn = DbFactory.GetConnection())
    {
         IBillingRepository repo = new BillingRepository(conn);
         IInstallmentCalculator calc = new InstallmentCalculator();
         IInstallmentService installmentService = new InstallmentService(repo,calc);
         IBillingService billService = new BillingService(installmentService, repo);
    
         billService.DoSomething(parameters);
    
    }
    
    2 回复  |  直到 16 年前
        1
  •  0
  •   Tony The Lion    16 年前

    我对Unity没有太多经验,但我会将连接详细信息保存到您的BillingRepository,并通过属性将打开的连接传递给其他对象。

    因此,在容器中创建一个返回BillingRepository对象的属性,然后您可以通过任何其他对象中的该属性访问打开的连接。

        2
  •  0
  •   Jeff Sternal    16 年前

    我会将对连接的依赖性引入到 BillingRepository ,就像您的示例中一样,但让Unity创建连接。

    计费存储库 工具 IDisposable

    如果计费存储库维护的某些状态需要更长的生命周期(例如,对于应用程序的生命周期),我会将其考虑到另一个类中,并使计费存储库也依赖于此。

    推荐文章