Асфакторная реализация в Nineject в отличие от Castle - PullRequest
0 голосов
/ 07 марта 2012

Я довольно новичок в замке и 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>()));

    }

Может кто-нибудь сказать, как добиться того же в Nineject? так как ISessionFactoryProvider предоставляется и инициализируется как фабричный метод в ninject?

1 Ответ

1 голос
/ 07 марта 2012
kernel.Bind<ISessionFactoryProvider>().ToFactory();

является эквивалентом. к этой конфигурации. Вы должны использовать Ninject.Extensions.Factory. Конфигурация IEnumerable существует по умолчанию.

...