asp.net-web-api - Ninject方法注入(inject)Redis

标签 asp.net-web-api redis servicestack ninject

我正在尝试使用 Ninject 来管理我对 ASP.NET Web Api 项目的 Redis 依赖项。 我这样绑定(bind):

 var clientManager = new PooledRedisClientManager("localhost");
 kernel.Bind<IRedisClientsManager>()
    .ToMethod(ctx => clientManager)
    .InSingletonScope();
 kernel.Bind<IRedisClient>()
    .ToMethod(k => k.Kernel.Get<IRedisClientsManager>()
    .GetClient());

我如何才能在项目的其他类中访问我的 redis 客户端?

最佳答案

我对Redis不熟悉,所以要小心...

现在您已经有了一个绑定(bind),您可以将它注入(inject)到一个构造函数中

public class Foo {
    public Foo(IRedisClient redisClient) {...}
}

或者您可以使用函数在特定时间访问/创建它:

public class Foo {
    private readonly Func<IRedisClient> redisClientFunc;

    public Foo(Func<IRedisClient> redisClientFunc) 
    {
        this.redisClientFunc = redisClientFunc;
    }

    public void DoSomething()
    {
        IRedisClient client = this.redisClientFunc();
        client.SayHello();
    }
}

或者,等效地,您可以使用 ninject 工厂扩展来实现与 func 相同的功能,但具有接口(interface),请参见 https://github.com/ninject/ninject.extensions.factory/wiki .两者 Func<>接口(interface)工厂需要工厂扩展。

关于asp.net-web-api - Ninject方法注入(inject)Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24066961/

相关文章:

c# - 使用 SimpleInjector 为 AccountController/ApplicationUserManager 注册 UserStore

c# - JSON.NET:如何根据父(持有者)对象值反序列化接口(interface)属性?

ruby-on-rails - Resque 未从配置中选择正确的服务器

c# - 从 C# 调用 WebApi 获取异常 HttpRequestException

c# - 将通用参数绑定(bind)到 Web API 中的自定义模型绑定(bind)器

list - 如何遍历redis列表

c# - 通过在 c# 中使用 console.writeline 获取 byte [][] 的输出,servicestack

asp.net - 在 ServiceStack 中使用 ASP.NET 成员资格

web-services - ServiceStack 客户端和二义性路由

ssl - ServiceStack SelfHost SSL 支持