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.