2

我有以下工作单元。它允许我通过 IOC 添加存储库,然后根据类型访问我的服务中的这些存储库 - 无需在每次出现新存储库时重写工作单元。从我所做的研究来看,使用 Activator 并不足以担心性能影响。

public class DbContextUnitOfWork : IDisposable
{
   public DbContextUnitOfWork(DbContext dbContext))
   {
       // Set DbContext
   }

   public void AddRepository<T>() where T : IRepository
   {
       // Activate T and inject DbContext
       // Add to singleton list
   }

   public T GetRepository<T>() where T : IRepository
   {
       // If T exists on list return T
   }

   // Other methods such as save, dispose, etc.
}

我的问题是,如何配置 Windsor,以便在它完成解析 DBContextUnitOfWork 后,我可以为我需要添加的每个存储库显式调用 AddRepository 方法?

4

2 回答 2

1

最后我发现我可以使用 Component.For().UsingFactory(),并且我可以注册一个为我构建 UnitOfWork 的自定义工厂。

于 2012-09-16T12:16:09.957 回答
1

大概您正在添加存储库,因为稍后将需要它们。通常的方法是向 Windsor 注册存储库类型,并要求 Windsor 在此时解析存储库而不是使用激活器预先创建它们。

于 2012-09-15T05:33:20.690 回答