2

У меня есть класс диспетчера сеансов, который имеет свойство сеанса. Мне нужно передать это в другой класс как параметр конструктора. Как настроить установщик для виндзора замка?Замок Windsor IoC вставляет свойство в конструктор

например.

public interface ISessionManager 
{ 
    ISession CurrentSession { get; set; } 
} 

public class SessionManager : ISessionManager 
{ 
    private ISession _session; 
    public ISession CurrentSession 
    { 
     get { return _session ?? (_session = NHibernateHelper.OpenSession()); } 
     set { _session = value; } 
    } 
} 

public interface IRequest 
{ 
    TR Execute<TR>(IExecuteManager<TR> executeManager); 
} 

public class Request: IRequest 
{ 
    private readonly ISession _session; 

    public Request(ISession session) 
    { 
     _session = session; 
    } 
    public TR Execute<TR>(IExecuteManager<TR> executeManager) 
    { 
     return executeManager.Request(_session); 
    } 
} 

Я укоренение вокруг в Виндзорском замке DOCS, но я должен искать для неправильные вещи или что-то отсутствует, потому что я уверен, что там, просто не могу найти его.

Как настроить установщик виндзора замка так, чтобы SessionManager.CurrentSession вводился в конструктор класса запроса? (ref to correct windsor doc или пример полностью прекрасен)

ответ

1
container.Register(Component.For<ISession>() 
    .UsingFactoryMethod(() => container 
     .Resolve<ISessionManager>().CurrentSession) 
    .LifeStyle.Transient); 
+0

Я изменил IService на ISession и все было хорошо. Благодаря! Я полностью ошибался в том, что я делал для этого, но теперь я выпрямляюсь. –