2012-05-16 8 views
0
/// <summary> 
    /// Starts up the Application. 
    /// </summary> 
    /// <param name="container">The container.</param> 
    /// <param name="pipelines">The pipelines.</param> 
    protected override void ApplicationStartup(TinyIoC.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) 
    { 
     base.ApplicationStartup(container, pipelines); 

     container.Register<UserProvider>().AsPerRequestSingleton(); 
    } 

Это мой существующий запуск приложения, содержащий мою конфигурацию TinyIoc. Есть ли способ принять все регистрации интерфейсов и превратить их все в PerRequestSingletons? Я не могу делать их «один за другим», поскольку у меня слишком много репозиториев, и я не могу оставить их в качестве синглетов, потому что это не работает с тем, как настроен NHibernate.TinyIoc - как мне настроить все регистрации интерфейсов AsPerRequestSingleton?

+0

никогда не слышал о TinyIoc до этого. По какой причине вы решили использовать его? – Chev

+1

Его поставщик IoC по умолчанию для Нэнси. Он работает из коробки. – biofractal

+0

@Diego Mijelshon Я не уверен, почему вы удалили тег NHibernate, поскольку он был неотъемлемой частью вопроса. Пожалуйста, объясни. –

ответ

1

Если вы хотите, чтобы все было запрошено в области, попробуйте перевести регистрацию в метод ConfigureRequestContainer, а не ApplicationStartup.

Как правило, это то, как вы обрабатываете запросы в одиночных единицах в Нанси.

Несоблюдение того, что вам может потребоваться другой пакет DI, например. http://nuget.org/packages/Nancy.Bootstrappers.Autofac
У этого есть больше особенностей и условностей, чтобы иметь дело с массовыми регистрациями.

Просто уберите его, затем сделайте свой загрузочный блок подклассом загрузочного устройства внутри пакета.

+0

ConfigureRequestContainer не работал для меня, так как он убил производительность (2,8 секунды, чтобы зарегистрировать все наши классы) –

+0

Я дал вам правильный ответ, поскольку я перешел на другой загрузчик. Мы пошли с Виндзором, как мы его использовали раньше –