我正在尝试使用 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/