過去にセッション管理の問題が提起されたことは知っていますが、問題を解決するのに役立つものは何も見つかりませんでした。
Castle Windsorを介して解決するリポジトリクラス(CustomerRepository、ProductRepositoryなど)がいくつかあります(注:ここで概説する3つの呼び出しパターンを適用しようとしています)。プレゼンターごとにセッションを作成するのが最適だと思います(私の場合、これはフォームごとに1つに相当します)が、リポジトリクラスは現在アクティブなフォームのセッションにアクセスする必要があります。これをどのように組み込むかわかりません。プレゼンターはシングルトンではないため、これらのリポジトリはウィンザーを介して解決されるという事実があります。
例えば:
public class SomePresenter
{
private ISomeView view;
private ISession session;
private ICustomerRepository customerRepository;
private IOrderRepository orderRepository;
public SomePresenter(ISomeView view, ISessionFactory sessionFactory, ICustomerRepository customerRepository, IOrderRepository orderRepository)
{
this.view = view;
this.session = sessionFactory.OpenSession();
this.customerRepository = customerRepository;
this.orderRepository = orderRepository;
}
}
リポジトリはセッションにアクセスする必要があります...Windsorを使用してこれを行うにはどうすればよいですか?プロパティを介してリポジトリに手動でセッションを設定する必要がありますか、それとも私がよく知らない巧妙なウィンザーのトリックがありますか?