2

我有一个具有会话属性的会话管理器类。我需要将它作为构造函数参数传递给另一个类。我应该如何配置城堡windsor的安装程序?Castle 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); 
    } 
} 

我已经乱翻在温莎城堡文档,但我必须寻找错误的事情还是失去了一些东西,因为我敢肯定它是存在的,只是找不到它。

我应该如何配置castle windsor安装程序,以便将SessionManager.CurrentSession注入到Request类的构造函数中? (参考纠正windsor文档或例子是完全好的)

回答

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

我改变了IService ISession,都很好。谢谢!就我所提到的文件而言,我完全处于错误的轨道上,但现在我已经理顺了。 –

相关问题