c# - CaSTLe Windsor IoC 将属性注入(inject)构造函数

标签 c# dependency-injection inversion-of-control castle-windsor

我有一个具有 session 属性的 session 管理器类。我需要将其作为构造函数参数传递给另一个类。我应该如何配置温莎城堡的安装程序?

例如

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 注入(inject)到 Request 类的构造函数中? (引用正确的温莎文档或示例也完全可以)

最佳答案

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

关于c# - CaSTLe Windsor IoC 将属性注入(inject)构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17304364/

相关文章:

c# - 在 foreach 的声明中调用方法

java - Spring中使用依赖注入(inject)替代工厂模式

c# - 如何配置 Simple Injector 以在 ASP.NET MVC 中运行后台线程

swift - iOS-Swift-collectionView header的位置

c# - 使用后处理 ObjectContext(每个请求)

c# - SignedXml 生成无效签名

c# - 使用 XmlDocument C# 在 xml 中添加根元素

.net - 温莎城堡 : How do you add a call to a factory facility not in xml?

c# - XUnit 在测试失败时输出更多信息

c# - 在 ASP.NET Core MVC 中注入(inject) ApplicationUser