Использование Funq в ServiceStack
- Как я могу получить доступ
Container
экземпляр из контроллера? - Я должен использовать
Container.Resolve
в моем классе, но как я могу получить доступContainer
пример? - Это синглтон?
- Могу ли я использовать
new Container()
или есть какая-то цепь, какFunq.StaticContainer
?
Спасибо Mythz за подсказку, а) или б) или в).
Я буду использовать решение Mythz, оно принято мной, но есть проблемы с его шаблоном (ServiceLocator
Pattern), вы можете проверить здесь для получения дополнительной информации.
1 ответ
Решение
Есть несколько способов статически ссылаться на ваш экземпляр AppHost. Вы можете разрешить зависимость через экземпляр IAppHost с помощью:
HostContext.TryResolve<T>();
HostContext.Resolve<T>();
HostContext.AppHost.TryResolve<T>();
Если по какой-то причине вам нужен доступ к бетону Funq.Container
Вы можете получить к нему доступ через синглтон:
ServiceStackHost.Instance.Container
Находясь внутри Сервиса, Razor View Page и т. Д., Вы можете использовать:
base.TryResolve<T>();