我有以下工作单元。它允许我通过 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 方法?