В ServiceStack, какой способ получить контейнер
В настоящее время я пытаюсь использовать ServiceStack в приложении SignalR, который я пишу, который является частью большого приложения MVC 4.5.
В настоящее время у меня есть класс в папке App_Start, которая запускает мой концентратор. Мой вопрос: как получить ссылку на контейнер, как показано в wiki для ServiceStack.
container.Register<IRedisClientsManager>(c => new PooledRedisClientManager("localhost:6379"));
container.Register<ICacheClient>(c => (ICacheClient)c.Resolve<IRedisClientsManager>().GetCacheClient());
Я использую Redis как уровень кэша разработки и планирую использовать наш exisitng membase как уровень кэша продукции.
Как мне получить контейнер?
Ответы
Ответ 1
Чтобы разрешить зависимости от ServiceStack IOC вне сервис -сервера, вы можете использовать:
var foo = HostContext.TryResolve<IFoo>(); //null if doesn't exist
var foo = HostContext.Resolve<IFoo>(); //throws if IFoo doesn't exist
Есть несколько для доступа к Контейнеру снаружи из ServiceStack, самый быстрый способ:
var container = HostContext.Container;
Через однопользовательский режим AppHost
Это сокращенный способ доступа к нему с помощью IAppHost
singleton:
HostContext.AppHost.Container