Ninject InRequestScope не работает ТОЛЬКО при использовании провайдера<T>

При условии:

kernel.Bind<IClientFactory>()
  .ToProvider<ClientFactoryProvider>()
  .InSingletonScope();

kernel.Bind<IClient>()
  .ToProvider<ClientProvider>()
  .InRequestScope();

public class ClientProvider : Provider<IClient>
{
   private readonly IClientFactory _factory;

   public ClientProvider(IClientFactory factory)
   {
      _factory = factory;
   }

   protected override IClient CreateInstance(IContext context)
   {
       return _factory.Create();
   }
}

И этот IClient является IDisposable.

Проблема в том, что Dispose не вызывается в конце запроса. При использовании заводских методов все работает. При создании оболочки для IClient (pass-thru) это тоже работает.

Есть идеи почему?

Чтобы быть более понятным, IClient на самом деле является IRedisClient, а IClientFactory является IRedisClientsManager, оба из ServiceStack.

0 ответов

Другие вопросы по тегам