Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Funq usage in ServiceStack

  • How can I access Container instance out of controller?
  • I have to use Container.Resolve in my class but how can I access Container instance?
  • Is it singleton?
  • Can I use new Container() or is there any chain like Funq.StaticContainer?

Thanks to Mythz for gist hint, a) or b) or c).

I will use Mythz's solution, it is accepted by me but there are concerns for it's pattern (ServiceLocator Pattern), you can check here for extra info.

like image 438
Oguz Karadenizli Avatar asked May 31 '12 16:05

Oguz Karadenizli


1 Answers

There are a couple of ways to statically reference your AppHost instance. You can resolve a dependency via the IAppHost instance with:

HostContext.TryResolve<T>();
HostContext.Resolve<T>();
HostContext.AppHost.TryResolve<T>();

If for some reason you need to access the concrete Funq.Container, you can access it via the singleton:

ServiceStackHost.Instance.Container

Whilst inside a Service, Razor View Page, etc you can use:

base.TryResolve<T>();
like image 115
mythz Avatar answered Oct 04 '22 07:10

mythz