【问题标题】:Funq usage in ServiceStackServiceStack 中的 Funq 使用
【发布时间】:2012-05-31 16:19:02
【问题描述】:
  • 如何在控制器外访问Container 实例?
  • 我必须在课堂上使用Container.Resolve,但我如何才能访问Container 实例?
  • 是单例吗?
  • 我可以使用new Container() 还是有像Funq.StaticContainer 这样的链?

感谢 Mythz for gist hint,a) 或 b) 或 c)。

我将使用 Mythz 的解决方案,它被我接受了,但它的模式 (ServiceLocator Pattern) 存在问题,您可以check here for extra info

【问题讨论】:

标签: dependency-injection servicestack funq


【解决方案1】:

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

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

如果由于某种原因你需要访问具体的Funq.Container,你可以通过单例访问它:

ServiceStackHost.Instance.Container

在服务、Razor 视图页面等中,您可以使用:

base.TryResolve<T>();

【讨论】:

  • IAppHost 上没有 Resolve 方法我使用 TryResolve(来自 IResolver)
  • 感谢更新的答案。 TryResolve 为缺少的依赖项返回 null,其中 Resolve 会抛出 ResolutionException
猜你喜欢
  • 1970-01-01
  • 2014-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多