Я знаю, что вопрос об управлении сеансом поднимался в прошлом, но я не мог найти ничего, что помогло бы мне преодолеть мою проблему.
У меня есть несколько классов репозитория (например, CustomerRepository, ProductRepository и т. Д.), Которые я разрешаю через Castle Windsor (Примечание: я пытаюсь применить шаблон трех вызовов, как описано здесь). Я полагаю, что лучше всего иметь сеанс для каждого Presenter (в моем случае это эквивалентно одному сеансу для каждой формы), однако классам репозитория необходимо получить доступ к сеансу для текущей активной формы .. Я не уверен, как я включаю это с тем, что эти репозитории разрешаются через windsor, так как презентеры не синглтоны ..
Например:
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;
}
}
Репозиториям нужен доступ к сеансу ... Как мне это сделать с помощью Виндзора? Принужден ли я вручную устанавливать сеанс в репозиториях через свойство, или есть хитрый виндзорский трюк, с которым я не знаком?