В ServiceStack, какой способ получить контейнер - программирование
Подтвердить что ты не робот

В 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 как уровень кэша продукции.

Как мне получить контейнер?

4b9b3361

Ответ 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