gpt4 book ai didi

inversion-of-control - 在 ServiceStack 中,获取容器的正确方法是什么

转载 作者:行者123 更新时间:2023-12-03 20:27:54 24 4
gpt4 key购买 nike

我目前正在尝试在我正在编写的 SignalR 应用程序中使用 ServiceStack,该应用程序是大型 MVC 4.5 应用程序的一部分。

我目前在 App_Start 文件夹中有一个类正在启动我的集线器。我的问题是如何获取对 ServiceStack 的 wiki 中所示的容器的引用。

container.Register<IRedisClientsManager>(c => new PooledRedisClientManager("localhost:6379"));
container.Register<ICacheClient>(c => (ICacheClient)c.Resolve<IRedisClientsManager>().GetCacheClient());

我正在做的是使用 Redis 作为开发缓存层,并计划使用我们现有的 membase 作为生产缓存层。

我如何获得容器?

最佳答案

要从 ServiceStack 的 IOC 外部 servicestack 解决依赖关系,您可以使用:

var foo = HostContext.TryResolve<IFoo>(); //null if doesn't exist
var foo = HostContext.Resolve<IFoo>(); //throws if IFoo doesn't exist

有几个可以从ServiceStack外部访问Container,最快的方法是:
var container = HostContext.Container;

通过 AppHost 单例

这是通过 IAppHost 访问它的一种简写方式单例:
HostContext.AppHost.Container

关于inversion-of-control - 在 ServiceStack 中,获取容器的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13350621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com