Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Castle Windsor IoC将属性注入构造函数_C#_Dependency Injection_Inversion Of Control_Castle Windsor - Fatal编程技术网

C# Castle Windsor IoC将属性注入构造函数

C# Castle Windsor IoC将属性注入构造函数,c#,dependency-injection,inversion-of-control,castle-windsor,C#,Dependency Injection,Inversion Of Control,Castle Windsor,我有一个会话管理器类,它具有会话属性。我需要将其作为构造函数参数传递到另一个类中。我应该如何配置castle windsor的安装程序 e、 g 公共接口ISessionManager { ISession CurrentSession{get;set;} } 公共类会话管理器:ISessionManager { 非公开会议; 公听会 { 获取{return\u session??(\u session=NHibernateHelper.OpenSession());} 设置{u session

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

e、 g

公共接口ISessionManager
{
ISession CurrentSession{get;set;}
}
公共类会话管理器:ISessionManager
{
非公开会议;
公听会
{
获取{return\u session??(\u session=NHibernateHelper.OpenSession());}
设置{u session=value;}
}
}
公共接口IRequest
{
TR Execute(IExecuteManager executeManager);
}
公共类请求:IRequest
{
专用只读会话;
公开请求(ISession会话)
{
_会话=会话;
}
公共TR执行(IExecuteManager executeManager)
{
返回executeManager.Request(\u会话);
}
}
我一直在温莎城堡的文档中搜寻,但我一定是在寻找错误的东西或是遗漏了什么,因为我肯定它就在那里,就是找不到

我应该如何配置castle windsor安装程序,以便将SessionManager.CurrentSession注入到请求类的构造函数中?(参考修正温莎文档或示例也很好)

容器.寄存器(组件.For())
.使用FactoryMethod(()=>容器
.Resolve().CurrentSession)
(生活方式,短暂),;

我把iSeries换成了ISession,一切都很好。谢谢就我引用的文档而言,我完全走错了方向,但现在我明白了。
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);
    }
}