2012-03-07 56 views
0

我對城堡和Ninject很新穎。怎麼過,我有其中一個接口初始化爲工廠方法,這樣ninject中的asfactory實現與城堡形成鮮明對比

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
kernel.Bind<ISessionFactoryProvider>().ToFactory(); 

是等效的。到這個配置。你必須使用Ninject.Extensions.Factory。 IEnumerable配置默認存在。

+0

感謝您告知擴展程序不知道ninject的擴展:) – Joy 2012-03-09 04:25:57