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.
}

私の質問は、DBContextUnitOfWork の解決が完了したときに、追加する必要があるすべてのリポジトリに対して AddRepository メソッドを明示的に呼び出すことができるように、Windsor を構成するにはどうすればよいですか?

4

2 に答える 2

1

最後に、Component.For().UsingFactory() を使用できることがわかり、UnitOfWork を構築するカスタム ファクトリを登録できました。

于 2012-09-16T12:16:09.957 に答える
1

後で必要になるため、リポジトリを追加していると思われます。通常のアプローチは、リポジトリ タイプを Windsor に登録し、Activator を使用して前もってリポジトリを作成するのではなく、その時点で Windsor にリポジトリを解決するように依頼することです。

于 2012-09-15T05:33:20.690 に答える