ServiceStack中的Funq用法

ozz*_*ozz 6 dependency-injection servicestack funq

  • 如何Container从控制器中访问实例?
  • 我必须Container.Resolve在我的课堂上使用但是如何访问Container实例?
  • 是单身吗?
  • 我可以使用new Container()或有链接Funq.StaticContainer吗?

感谢Mythz 的主旨提示,a)或b)或c).

我将使用Mythz的解决方案,它被我接受,但有关于它的模式(ServiceLocator模式)的问题,你可以在这里查看额外的信息.

myt*_*thz 8

有几种方法可以静态引用AppHost实例.您可以通过IAppHost实例解决依赖关系:

HostContext.TryResolve<T>();
HostContext.Resolve<T>();
HostContext.AppHost.TryResolve<T>();
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因需要访问混凝土Funq.Container,您可以通过单例访问它:

ServiceStackHost.Instance.Container
Run Code Online (Sandbox Code Playgroud)

在服务,Razor View Page等内部,您可以使用:

base.TryResolve<T>();
Run Code Online (Sandbox Code Playgroud)