与城堡相比,在ninject中执行

时间:2012-03-07 10:06:20

标签: ninject

我对Castle和Ninject很新。我怎么会有一个声明,其中接口被初始化为工厂方法,就像这样

public class LazySessionContext
{
    private readonly ISessionFactoryImplementor factory;
    private const string CurrentSessionContextKey = "NHibernateCurrentSession";

    public LazySessionContext(ISessionFactoryImplementor factory)
    {
        this.factory = factory;
    }
}

现在,当我将ISessionFactoryImplementor作为工厂方法注入时,我们就像这样做了

public void Install(IWindsorContainer container, IConfigurationStore store)
    {


        container.Register(Component.For<ISessionFactoryProvider>().AsFactory());

        container.Register(Component.For<IEnumerable<ISessionFactory>>()
                                    .UsingFactoryMethod(k => k.ResolveAll<ISessionFactory>()));

    }

有人可以提一下如何在ninject中实现相同的目标吗?所以提供ISessionFactoryProvider并在ninject中初始化为工厂方法?

1 个答案:

答案 0 :(得分:1)

kernel.Bind<ISessionFactoryProvider>().ToFactory();

是等价的。到这个配置。您必须使用Ninject.Extensions.Factory。 IEnumerable配置默认存在。