我对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中初始化为工厂方法?
答案 0 :(得分:1)
kernel.Bind<ISessionFactoryProvider>().ToFactory();
是等价的。到这个配置。您必须使用Ninject.Extensions.Factory。 IEnumerable配置默认存在。