Castle Windsor IoC将财产注入Constructor

本文关键字:注入 Constructor 财产 Windsor IoC Castle | 更新日期: 2023-09-27 18:19:56

我有一个具有会话属性的会话管理器类。我需要将其作为构造函数参数传递到另一个类中。我应该如何配置castle windsor的安装程序?

例如

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);
    }
}

我一直在城堡里寻找windsor文档,但我一定是在找错误的东西或遗漏了什么,因为我确信它在那里,就是找不到。

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

Castle Windsor IoC将财产注入Constructor

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